通用异常处理方式如下:
以上代码能够不断要求用户输入x和y,然后计算x除以y,并打印结果。在异常处理过程中,还有一个值得关注的关键字,那就是finally。finally放在末尾,这里要注意,无论是否发生异常,finally都会被执行!看下面示例:
运行效果:
finally已经执行,因为代码是while死循环,大家可以输入任意数值来进行计算,就会发现,程序能够始终执行下去,异常处理保证了程序的健壮性。
抛出异常
异常应该及时处理,刚才看到这个在函数里处理的异常,都在函数里面。会有一些异常情况,如果这个函数里面发生异常,但是又不想处理这个异常,这个时候,可以继续将异常抛到上层,直到被处理,或者程序终止。
如下实例,这个简单点,第一个直接抛出异常,抛出一场raise exception。然后就是定义ingore_exception这个函数,忽略异常。最后再定义一个handle_exception处理掉异常。
然后,分别在主程序中调用这三个方法,看看会出现什么情况:
第1种,直接调用faulty方法:
print(faulty())
我们这里边存在异常存在异常,你看我直接调用这个函数,你看他把异常给抛出来了,程序终止。
第2种,调用忽略异常
print(ignore_exception())
可以看到,这个函数出错了,但是这个出错的原因是因为这个函数forty的异常传递到这个函数中了。
第3种,调用处理异常
print(handle_exception())
此时,就不一样了,所以说,我们应该及时考虑什么时候应该去干预异常,就是终止异常传递到哪儿。异常及时处理了,就不会抛到主程序,程序的逻辑将还在我们的控制范围内,一旦抛给主程序了,那么整个程序就会被终止,这应该不是我们想要的结果了。