1.try/except/else
try:
<statements>
except <name1>:
<statements>
except (name1,name2): #捕获所列出的任何异常
<statement>
except <name> as name3:
...
except: #捕获所有的异常
...
else: #没有发生异常就运行
...
except分句会捕获try代码块执行时所发生的任何异常。else子句只是在try代码块没有发生异常时执行,控制权会在整个try语句下继续
2.try/finally
如果try语句没有发生异常,python会执行finally代码块,然后在整个try语句后继续执行下去;如果try语句发生了异
常,python依然会执行finally代码块,但是会把异常向上传递到较高的try语句或者顶层的异常处理器。程序不会再try语句后继续执行
3.混合try语句
try--->exception--->else----->finally
4.raise
rasie class
raise instance
class MyExc(Exception): pass
try:
raise MyExc("spam")
except MyExc as X:
print X.args
>>>('spam',)
不管如何指定异常,异常总是通过实例对象来识别。一旦一个异常有except捕获,它就死掉了
5.assert
assert几乎都是用来收集用户定义的约束条件,而不是捕捉内在的程序设计错误
6.with/as
with open('text.txt') as myfile:
for line in myfile:
print line
无论with代码块是否引发异常,文件都会在with代码块执行完之后,自动关闭