异常机制是一种在程序运行过程中处理错误和异常情况的机制。当程序执行过程中发生异常时,会中断正常的执行流程,并转而执行异常处理的代码。这可以帮助我们优雅地处理错误,保证程序的稳定性和可靠性。
Error类型
- SyntaxError`:语法错误,通常是由于代码书写不正确而引发的异常。
NameError
:名称错误,当尝试访问一个未定义的变量或名称时引发的异常。IndexError
:索引错误,当访问列表、元组或字符串等序列类型时使用了无效的索引引发的异常。KeyError
:键错误,当尝试使用字典中不存在的键引发的异常。ValueError
:值错误,当函数接收到一个正确类型但是不合法的值时引发的异常。FileNotFoundError
:文件未找到错误,当尝试打开或操作不存在的文件时引发的异常。ImportError
:导入错误,当导入模块失败时引发的异常,可能是因为找不到模块或模块中缺少所需的内容。ZeroDivisionError
:零除错误,当除法或取模运算的除数为零时引发的异常。AttributeError
:属性错误,当尝试访问对象不存在的属性或方法时引发的异常。IOError
:输入/输出错误,当发生与输入和输出操作相关的错误时引发的异常。例如,尝试读取不存在的文件或在写入文件时磁盘已满。
基本语法
异常的基本结构:try except
# (1) 通用异常
try:
pass # 正常执行语句
except Exception as ex:
pass # 异常处理语句
# (2) 指定异常
try:
pass # 正常执行语句
except <异常名>:
pass # 异常处理语句
# (3) 统一处理多个异常
try:
pass # 正常执行语句
except (<异常名1>, <异常名2>, ...):
pass # 异常处理语句
# (4) 分别处理不同的异常
try:
pass # 正常执行语句
except <异常名1>:
pass # 异常处理语句1
except <异常名2>:
pass # 异常处理语句2
except <异常名3>:
pass # 异常处理语句3
# (5) 完整语法
try:
pass # 正常执行语句
except Exception as e:
pass # 异常处理语句
else:
pass # 测试代码没有发生异常
finally:
pass # 无论是否发生异常一定要执行的语句,比如关闭文件,数据库或者socket
机制说明:
- 首先,执行try子句(在关键字try和关键字except之间的语句)
- 如果没有异常发生,忽略except子句,try子句执行后结束。
- 如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常那么对应的except子句将被执行。
- 在Python的异常中,有一个通用异常:
Exception
,它可以捕获任意异常。