python-try-except扩展
栏目分类:Python教程 发布日期:2020-01-18 浏览次数:次
try-except扩展
这样做的好处是,可以让我们针对不同的异常做出不一样处理,相比之前对所有异常做统一化处理的方式,多except结构可以增加程序的健壮性,应付更复杂的事件。
但是在书写时,从上往下例举异常时,应该尽可能让子类在前,基类在后,因为基类可以包含子类,比如如果直接写了BaseException这个最大的基类,那么其他所以有的异常就都会被包含进去,没有办法再细分了。如果不知道异常类直接的继承关系,可以使用我们之前学过的mro()方法查看。
输出结果:
[<class 'ZeroDivisionError'>, <class 'ArithmeticError'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>]
except多结构实例:
以上程序无论我们输入有任何错误,都不会导致程序崩溃,只会获得相应的错误提示信息,这就是异常处理的好处。
比如上例中第5行,如果有异常时它将毫无作用,因为会程序遇到异常会直接去处理,只有没有发现异常时,它才会执行,如此我们不如把它放在else里面。
使用else会使程序之间的逻辑更加严密,也可根据个人喜好去使用它。
当然它们都是任选的。
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里面。
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