一、异常是什么
什么是错误 | 指由于逻辑或语法等导致一个程序无法正常执行的问题 |
特点 | 有些错误是无法预知的 |
什么是异常 | 指程序出错时标识的一种状态 |
当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态 | |
作用 | 用作信号,通知上层调用者有错误需要处理 |
二、try语句
语法 | 1.try-except 语句 |
2.try-finally 语句 |
2.1 try-except语句
语法 | try: 可能触发异常的语句 except 错误类型1 [as 变量1]: 异常处理语句1 except 错误类型2 [as 变量2]: 异常处理语句2 except (错误类型3, 错误类型 4) [as 变量3]: 异常处理语句3 。。。 except: 异常处理语句other(收集以上未列出的异常) else: 未发生异常时,要执行的语句 finally: 最终语句(必须要执行的语句) |
作用 | 尝试捕获异常,将程序转为正常状态并继续执行 |
示例 try_except.py try和 “except 错误类型” 是如何捕获异常的?
| |
示例 try_except2.py 如何用except 收集未列出的异常?
| |
示例 try_except3.py
| |
示例 try_except_else.py
| |
示例 try_except_finally.py
|
2.2 try-finally语句
语法 | try: 可能触发异常的语句 finally: 一定要执行的最终语句 |
说明 | 1.finally子句不可以省略 |
2.一定不存在except子句 | |
作用 | 通常用try-finally语句来做触发异常时必须要处理的事情,无论异常是否发生,finally子句都会被执行 |
注 | try-finally语句不会改变程序的状态(正常/异常) |
示例 try-finally.py
|
三、raise语句
作用 | 触发一个错误,让程序进入异常状态 |
语法 | raise 异常类型 |
raise 异常对象 | |
示例 raise.py 示意 raise 异常类型
示例 raise2.py 示意 raise 异常对象
|
四、assert语句(断言语句)
语法 | assert 真值表达式,错误数据(通常是字符串) |
作用 | 当真值表达式为False时,用错误数据创建一个AssertionError类型的错误,并进入异常状态; |
等同于: if 真值表达式 == False: raise AssertionError(错误数据) | |
示例 get_score.py
|
五、异常语句小结
try-except | 接收异常通知,捕获异常,处理错误,将状态改为正常状态 |
try-finally | 执行一定要执行的语句 |
raise | 发送异常通知,将程序转为异常状态(进入异常流程) |
assert | 根据条件来触发AssertionError类型的异常 |
with | 以后学 |
为什么要用异常处理机制? | 1.在程序调用层数较深时,向主调函数传递错误信息需要层层return返回比较麻烦,所以用异常处理机制来解决此类问题 |
示例 exception_sample.py
| |
|
|
|
|
|
|
|
|
|
|
|
|