python中的五种异常处理惩罚机制先容
从几年前开始进修编程直到此刻,一直对措施中的异常处理惩罚怀有惊骇和排出心理。之所以这样,是因为不相识。这次攻python,首先把本身最害怕和最不熟悉的几块内容列出来,内里就有「异常处理惩罚」这一项。
《Dive into Python》并没有专门先容异常处理惩罚,只是例子顶用到的时候略微说明白一下。本日下载《Learn Python》,直接进异常处理惩罚这块。这一部门有四章,第一章讲授异常处理惩罚的一般利用要领,后头的章节深入地接头其机制。我今朝只看了第一章,先学会用,今后有须要的时候再扩展阅读。
python主要支持五种异常机制,一一罗列。
默认的异常处理惩罚器
代码如下:
s = 'Hello girl!' print s[100] print 'continue'
假如我们没有对异常举办任何防范,那么在措施执行的进程中产生异常,就会间断措施,挪用python默认的异常处理惩罚器,并在终端输出异常信息。这种环境下,第3行代码不会执行。
try…except
代码如下:
s = 'Hello girl!' try: print s[100] except IndexError: print 'error...' print 'continue'
措施执行到第2句时发明try语句,进入try语句块执行,产生异常,回到try语句层,寻找后头是否有except语句。找到except语句后,会挪用这个自界说的异常处理惩罚器。except将异常处理惩罚完毕后,措施继承往下执行。这种环境下,最后两个print语句城市执行。
except后头也可觉得空,暗示捕捉任何范例的异常。
try…finally
代码如下:
s = 'Hello girl!' try: print s[100] finally: print 'error...' print 'continue'
finally语句暗示,无论异常产生与否,finally中的语句都要执行。可是,由于没有except处理惩罚器,finally执行完毕后措施便间断。这种环境下,倒第2个print会执行,到第1个不会执行。假如try语句中没有异常,三个print城市执行。
assert
代码如下:
assert False,'error...' print 'continue'
这个语句,先判定assert后头紧跟的语句是True照旧False,假如是True则继承执行print,假如是False则间断措施,挪用默认的异常处理惩罚器,同时输出assert语句逗号后头的提示信息。本例环境下,措施间断,提示error,后头的print不执行。
with…as
代码如下:
with open('nothing.txt','r') as f: f.read() print 2/0 print 'continue'
我们平时在利用雷同文件的流工具时,利用完毕后要挪用close要领封锁,很贫苦。这里with…as语句提供了一个很是利便的替代要领:open打开文件后将返回的文件流工具赋值给f,然后在with语句块中利用。with语句块完毕之后,会埋没地自动封锁文件。
假如with语句或语句块中产生异常,会挪用默认的异常处理惩罚器处理惩罚,但文件照旧会正常封锁。
这种环境下,会抛出异常,最后的print不执行。