Python捕获异常
时间: 2023-11-05 22:22:25 浏览: 71
Python 捕获代码中所有异常的方法
在Python中,可以使用try和except来捕获异常。在try语句块中,我们可以编写可能会引发异常的代码。如果try块中的代码引发了异常,并且该异常的类型与except语句中指定的异常类型匹配,那么except语句块中的代码将被执行。可以有多个except语句块,用于处理不同类型的异常。如果没有except语句能够匹配到引发的异常,那么该异常将继续向上层传递,直到被捕获或导致程序终止。
此外,还可以使用else语句块来指定当try块中的代码没有引发任何异常时要执行的代码。不论是否引发了异常,finally语句块中的代码都将被执行。
举个例子,假设我们有一个包含多个异常的列表,我们可以使用循环来遍历该列表并使用try-except语句来捕获并处理每个异常。在每次循环中,如果引发的异常与我们指定的DangerousError类型匹配,那么相应的错误消息将被打印出来。无论是否引发了异常,最终的处理完成消息都会被打印出来。
```
class DangerousError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
AError = DangerousError("犯了DangerousErrorA错误")
BError = DangerousError("犯了DangerousErrorB错误")
CError = DangerousError("犯了DangerousErrorC错误")
Elist = [AError, BError, CError, TypeError('1233211234567')]
for i in range(4):
print(i)
try:
raise Elist[i]
except DangerousError as e:
print(e)
finally:
print("处理完成。")
print("hello world!")
```
在上述例子中,异常类型DangerousError与前三个异常匹配,所以对应的错误消息被打印出来。最后的处理完成消息被打印两次,因为循环只执行了两次。最外层的print("hello world!")语句始终不会被执行。这是因为在引发第四个异常时,异常没有被DangerousError类型捕获,所以程序在那里终止了。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文