Python 第十三节 异常
一.异常和异常处理
异常在执行中断后会以信息的形式打印在终端给与提示,以调用栈的形式显示具体信息
我们写程序的过程中, 终归会有考虑不到或者出乎意料的地方, 对此, 为了保证程序遇到异常, 仍能继续执行下去, 则就要用到异常处理。
异常处理的逻辑如下:
try:
代码块1
except 异常类别1:
异常处理代码块1
except 异常类别2:
异常处理代码块2
except: 异常处理代码块3
else:
代码块2
具体过程如下:
1.执行代码块1(代码块1是正常的程序逻辑, 即我们要实现的部分)
2.如果并没有触发异常, 则执行完代码块1就结束, except部分忽略
3.否则, 从代码块1触发异常的位置起,停止后续代码块1的执行。触发的异常会去匹配后面的异常分支(触发的异常会有一个名称, 比方说除数为0的异常叫做ZeroDivisionError
), 进而去执行对应的分支内的异常处理逻辑。等执行完异常逻辑处理, 再转而继续执行代码块1剩下的部分。
4.如果未找到对应的except分支, 那么异常会抛给上层的try对应的异常处理。
5.如果完全无异常, 则会继续执行else分支(else分支可选, 其目的是将try内的代码块拆分得更细)
举一个简单的例子:
def FunTest(xx, yy):
print(xx/yy)
if __name__ == '__main__':
aa = 10;
bb = 0;
try :
FunTest(aa, bb)
except Exception:
print("异常, 为程序的能够不报错, 返回值 :", 0)
else:
print('如果看到这句话, 证明为触发异常')
执行结果如下:
还有try...finally...
还有一部分用户自定义异常