本文字数:2135 字
阅读本文大概需要:6 分钟
写在之前
在昨天的文章(
零基础学习 Python 之错误 & 异常
)中我介绍了 Python 中「错误 & 异常」的概念,如果在程序运行过程中抛出了异常,程序就会中止运行。这样的程序不是「健壮」的,健壮的程序应该不被各种异常所击倒。
所以,程序出现了异常就要「处理异常」。
处理异常
首先,让我们先来看一段代码:
运行上面的代码,显示的结果如下:
从运行的情况来看,当在第 2 个数,即除数为 0 时,程序并没有因为这个错误而停止,而是给了一个很友好的提示,让我们有机会改正错误,这完全得益于「异常处理」的设置,如果没有处理异常的机制,当异常出现的时候程序就会中止。
1.try...except...
对于上面的例子,只看到了 try 和 except 部分,如果没有异常发生的话,except 在 try 执行后被忽略;如果 try 子句中有异常的话,则该部分的其它子句被忽略,直接跳到 except 部分,执行其后面指定的异常类型及其子句。
except 后面也可以没有任何异常类型,即无异常参数。如何这样的话,不论 try 部分发生什么异常,都会执行 except。
2.处理多个异常
try...except... 是处理异常的基本方式,在此基础上,还可以扩展,也就是能够处理多个异常。
这里所说的处理多个异常,并不是因为同时报出多个异常,而是程序在运行中,只要遇到一个异常就会反应,所以每次捕捉到的异常一定是一个,由不同的 except 子句处理。
3. else 子句
其实有了 try...except...,在一般情况下是够用的,但怕就怕在总有不一般的情况出现,所以就增加一个 else 子句,这个其实就和我们说的话一样,总要根据需要添加不少东西。
上述代码的运行结果如下:
上述代码能够帮助我们理解 else 的执行特点:如果 try 被执行了,则 except 被忽略,但是 else 被执行。然后我们在来看下面的代码:
上述代码的运行结果如下:
这个时候,else 就不被执行了,两个例子帮助我们了解了 else 的执行特点。
4.finally
finally 子句,一看这个名字,就感觉这是做善后工作的。的确如此,如果有了 finally ,不管前面执行的是 try 还是 except,最终都要执行它。因此,有一种说法是将 finally 用在可能的异常后进行清理,请看下面的例子:
上述代码的运行结果如下:
我们来看一看 x 是否被删除:
当然,在应用里面可以将上面的各个句子综合起来使用,写成下面这样:
写在最后
异常处理到这就写完了,基本上所有的都在这了,明天是「错误 & 异常」的一个扩展知识点 -- 「断言」,敬请期待。
如果你觉得今天的文章对你有所帮助的话,欢迎点赞转发,谢谢支持。
The end。
领取专属 10元无门槛券
私享最新 技术干货