一、Python异常处理

在 Python 中,异常处理是一种用于处理程序运行时可能出现的错误情况的机制。

异常处理使用 try-except 语句结构。以下是一个基本的示例:

try:
    # 可能会引发异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 处理除数为 0 的异常
    print("不能除以 0!")

您还可以使用多个 except 子句来处理不同类型的异常:

try:
    num = int("abc")
    result = 10 / 0
except ValueError:
    print("值错误,无法将非数字字符串转换为整数。")
except ZeroDivisionError:
    print("不能除以 0!")

此外,还可以使用 except Exception as e 来捕获所有类型的异常,并通过 e 获取异常的相关信息:

try:
    # 可能引发异常的代码
    num = int("abc")
except Exception as e:
    print(f"发生了异常: {e}")

try-except 语句还可以包含 else 子句,当 try 子句中的代码没有引发异常时执行:

try:
    num = 5
except ValueError:
    print("值错误")
else:
    print("没有异常,num 的值为:", num)

以及 finally 子句,无论是否发生异常都会执行:

try:
    num = 10 / 2
except ZeroDivisionError:
    print("不能除以 0!")
finally:
    print("这部分总会执行")

通过合理地使用异常处理,可以增强程序的健壮性和容错性,使其在面对各种错误情况时能够更加稳定和可靠地运行。

二、常见的异常类型

以下是 Python 中一些常见的异常:

  • ZeroDivisionError:当尝试除以零时引发。
  • NameError:当尝试使用未定义的变量时引发。
  • TypeError:当操作或函数应用于不适当类型的对象时引发。
  • ValueError:当函数接收到具有正确类型但值不合适的参数时引发。
  • IndexError:当尝试使用超出序列范围的索引时引发。
  • KeyError:当尝试访问字典中不存在的键时引发。
  • FileNotFoundError:当尝试打开不存在的文件时引发。
  • AttributeError:当尝试访问对象不存在的属性时引发。
  • ImportError:当导入模块失败时引发。
  • SyntaxError:当代码存在语法错误时引发。

三、自定义异常

以下是一个 Python 自定义异常的示例:

class CustomException(Exception):
    """自定义异常类"""
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return f"自定义异常: {self.message}"

# 使用自定义异常
def divide_numbers(a, b):
    if b == 0:
        raise CustomException("除数不能为 0")
    return a / b

try:
    result = divide_numbers(5, 0)
except CustomException as e:
    print(e)