python使用被称为异常的特殊对象来管理程序执行期间发生的错误。
异常例子:
1.NameError:变量未定义
2.ZeroDivisionError:除数为零
3.SyntaxError:python解释器语法错误,发生在程序运行前
4.IndexError:索引超出序列范围
5.KeyError:字典关键字不存在
6.FileNotFoundError:文件不存在
7.AttributeError:对象没有对应属性
异常处理语句:
try-except
带有多个except的try语句
处理多个异常的except语句
捕获所有异常,except后加 Exception,或空(不建议)
try-except-else-finally
try-finally
当异常发生时,有两种结果:
a)使用 try-except 代码块提前编写了处理异常的代码,程序将继续执行
b)未对异常进行处理,程序将停止,并显示一个traceback,其中含异常报告
例:用 try-except 处理 ZeroDivisionError 异常:
1 try: 2 print(5/0) 3 except ZeroDivisionError: 4 print('You can not divide by zero!')
You can not divide by zero!
在 3 行 except 后若预先知道将发生何种错误,可写上异常,否则不写即可。只有当执行 try 代码块发生错误时才执行 except 后代码,若 try-except 后还有其它代码则程序继续执行。
还有一种 try-except-else 代码块,try 语句放入可能引发异常的代码,except 语句放入发生异常后需要执行的动作的代码,有时仅在try语句成功执行后才运行的代码,这些代码放入else语句中。
上下文管理:with语句
触发异常:raise语句
raise ErrorName ()
断言:assert语句
assert expression1 [,expression2] expression2可选,当expression1为False时执行expression2
通过类自定义异常:继承字Exception类,通过raise人工触发