1. 编程学习网 > 编程教程 > Python教程 > python-try-except扩展

python-try-except扩展

try-except扩展

1.try-except 多语句结构

try-except还支持多个except结构,可以让我们方便处理多个不同的异常,语法如下:

这样做的好处是,可以让我们针对不同的异常做出不一样处理,相比之前对所有异常做统一化处理的方式,多except结构可以增加程序的健壮性,应付更复杂的事件。
但是在书写时,从上往下例举异常时,应该尽可能让子类在前,基类在后,因为基类可以包含子类,比如如果直接写了BaseException这个最大的基类,那么其他所以有的异常就都会被包含进去,没有办法再细分了。如果不知道异常类直接的继承关系,可以使用我们之前学过的mro()方法查看。

输出结果:
[<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>]
 
except多结构实例:


以上程序无论我们输入有任何错误,都不会导致程序崩溃,只会获得相应的错误提示信息,这就是异常处理的好处。

2.else结构

try-except结构后面还可以加else,含义很简单。当try里面的代码段执行有异常时会执行except的异常处理代码段,如果没有异常则会执行else语句的代码段。
比如上例中第5行,如果有异常时它将毫无作用,因为会程序遇到异常会直接去处理,只有没有发现异常时,它才会执行,如此我们不如把它放在else里面。

使用else会使程序之间的逻辑更加严密,也可根据个人喜好去使用它。

3.finally语句

除了else,try-except结构后面还可以加finally语句。
当然它们都是任选的。
finally语句结构内的代码是无论try里的内容是否发生异常都会执行。


可以打开第三行代码,将a改成b,发现无论如何finally都会执行。
如果是输出a,那么try里面没有异常,之后会执行else语句,a变成15,最后会执行finally里面的代码,a变成10最后输出。
输出结果:
10
我是else里面a: 15
我是finally里面a: 10
如果打开第三行代码,那么try里面会有异常则执行except的异常信息输出语句,不执行else的内容,但是finally的内容还是会输出。
输出结果如下:
name 'b' is not defined
我是finally里面a: 5
 
finally常用于打开文件时,最后关闭文件对象。比如:

如果try里面仅仅要打开一个文件,而且这个文件不存在,此时应该注意,因为找不到文件f就不会被赋值,那么finally里面的f.close()就会执行报错,除非将它在放在一个try-except里面。

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/Python/2020/0118/543.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休