Python中的try/except/else/finally语句

Python中的 try/except 语句常在代码可能会出现异常(报错)的地方使用,try 里面的代码报错时就转到 except 里执行,except 里可以打印出报错信息或者直接 pass,继续运行后面的代码。

其他还有 else、finally 语句,灵活使用这些语句能让程序在可能会遇到错误的情况下也可以很好的运行。

先看看这些语句的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
try:
Normal execution block
occur error
except A:
Exception A handle
except B:
Exception B handle
except:
Other exception handle
else:
if no exception,get here
finally:
print("finally")
no matter have error, always execution finally

上面的代码非常易懂,try 中遇到报错,根据报错类型是A还是B,选择执行except 里的代码。如果 try 中没有报错,就执行else中的代码。finally 里的不管时候报错,最后都会执行。


但还要注意一些地方:

try 语句不能单独使用,后面必须跟 except 或者 finally。

try 后面跟 except 时,遇到报错后会执行 except 里的代码,执行完会继续执行之后的代码。也就是说遇到报错后不会中断程序的运行。

try 后面只跟 finally 时,遇到报错会执行 finally 里的代码,执行完 finally 里的之后会中断代码的执行。

try–>except–>else–>finally 这个顺序不能用错。

使用except时要小心,因为它会忽略try中的错误,继续执行后面的代码。


当这些语句中有 return 时会 return 哪一个呢?这是一个有意思的问题。

try…except…finally 中,try 中 raise 异常时跳到 except 中执行,except 中遇到 return 时,先将 return 的值保存起来,然后强制跳到 finally 里执行,finally 中遇到 return 时就返回 finally 里的,finally 里没遇到 return 时,就返回刚才except 里的。

try…finally 中,和上面一样,两个中都有return时,会返回finally里的。但是finally里的代码都会在遇到try中的return时强制执行。

参考链接:
https://blog.csdn.net/qq_24509613/article/details/73929224

https://www.jb51.net/article/156435.htm