流程控制(Control Flow)¶
try 语句¶
try 语句可以后跟 except, except...else, finally, except...finally, except...else...finally
对于 try...except...finally 和 try...except...else...finally 相当于是
try:
try:
...
except:
...
else:
...
finally:
...
这是一个知识点(PKP+1)
try ... except...(else...) 语句(PKP+1)¶
只有当没有任何异常发生时,才会走到 else 子句中
如果有异常发生,但except 没有捕获,会发生一个隐含的 raise ,所以
try:
...
except A:
...
except B:
...
else:
...
相当于是
try:
...
except A:
...
except B:
...
except:
raise
else:
...
如果不知道是什么异常,用 Exception
try:
kk
except Exception, e:
print type(e), e
输出
<type 'exceptions.NameError'> global name 'kk' is not defined
可以 except NameError 也可以 except NameError, e 也可以 except NameError as e 当然也可以不带参数
一个 try 后可以跟多个 except 测试不同的条件。
每个 except 中还可以跟多个测试条件如 except (RuntimeError, TypeError, NameError):
try ... finally... 语句(PKP+1)¶
for 语句(PKP+1)¶
for...else... 语句(PKP+1)¶
注意,看到 for ... else 语句,初学者容易理解为,当 for 循环一次也不满足时,走 else ,这是不对的。 只有当 for 循环中遇到 break 时,才不走 else 。