python
的
try
语句有两种风格
一:种是处理异常(
try/except/else
)
二:种是无论是否发生异常都将执行最后的代码(
try/finally
)
try/except/else
风格
try:
<
语句
>
#
运行别的代码
except
<
名字
>
:
<
语句
>
#
如果在
try
部份引发了
'name'
异常
except
<
名字
>
,
<
数据
>:
<
语句
>
#
如果引发了
'name'
异常,获得附加的数据
else:
<
语句
>
#
如果没有异常发生
try
的工作原理是,当开始一个
try
语句后,
python
就在当前程序的上下文中作标记,这样当异
常出现时就可以回到这里,
try
子句先执行,接下来会发生什么依赖于执行时是否出现异常。
1
、
如果当
try
后的语句执行时发生异常,
python
就跳回到
try
并执行第一个匹配该异常的
except
子句,异常处理完毕,控制流就通过整个
try
语句(除非在处理异常时又引发新的异常)
。
2
、如果在
try
后的语句里发生了异常,却没有匹配的
except
子句,异常将被递交到上层的
try
,
或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)
。
3
、如果在
try
子句执行时没有发生异常,
python
将执行
else
语句后的语句(如果有
else
的话)
,
然后控制流通过整个
try
语句。
try/finally
风格
try:
<
语句
>
finally:
<
语句
>
#
退出
try
时总会执行
python
总会执行
finally
子句,无论
try
子句执行时是否发一异常。
1
、如果没有发生异常,
python
运行
try
子句,然后是
finally
子句,然后继续。
2
、如果在
try
子句发生了异常,
python
就会回来执行
finally
子句,然后把异常递交给上层
try
,
控制流不会通过整个
try
语句。
当你想无论是否发生异常都确保执行某些代码时,
try/finally
是有用的。
这个在打开文件的时候有用
finally
总是在最后
close()
文件