在程序中捕获异常通常使用`try-except`语句。这个语句块的结构如下:
```python
try:
可能引发异常的代码块
放到try中
如果try中的代码,报错了,不会让程序卡死的情况
except ExceptionType:
如果出错了,会执行catch中的代码,来捕获异常
catch (Exception e)具体报错追踪,通过e得到,具体的报错信息
```
其中,`ExceptionType`是你希望捕获的异常类型,可以是内置的异常类,也可以是自定义的异常类。当`try`块中的代码发生异常时,程序会跳转到`except`块中执行相应的处理代码。
示例
下面是一个简单的Python示例,演示了如何使用`try-except`语句捕获异常:
```python
try:
尝试除以零,这会引发 ZeroDivisionError 异常
result = 10 / 0
except ZeroDivisionError:
处理除零错误
print("不能除以零哦!")
```
在这个例子中,如果`try`块中的除法操作引发`ZeroDivisionError`异常,程序会执行`except`块中的代码,打印出"不能除以零哦!"。
多个异常处理
你可以在一个`except`块中捕获多个异常,或者使用多个`except`块分别处理不同的异常。例如:
```python
try:
num = int(input("输入一个数字: "))
result = 100 / num
except ValueError:
输入的不是数字
print("输入的不是数字")
except ZeroDivisionError:
除数不能为0
print("除数不能是0哦")
```
在这个例子中,如果用户输入的不是数字,会捕获`ValueError`异常;如果输入的数字是0,会捕获`ZeroDivisionError`异常。
捕获所有异常
如果你希望捕获所有类型的异常,可以使用一个没有指定异常类型的`except`块:
```python
try:
可能引发各种异常的代码
file = open("non_existent_file.txt", "r")
except Exception as e:
捕获所有异常
print(f"An error occurred: {e}")
```
但是,通常建议尽量捕获具体的异常类型,以避免隐藏潜在的错误。
finally子句
`finally`子句是可选的,它包含无论是否发生异常都需要执行的代码,例如关闭文件、释放资源等:
```python
try:
可能引发异常的代码块
file = open('data.txt', 'r')
content = file.read()
except FileNotFoundError:
文件找不到
print("找不到文件诶")
finally:
if file:
file.close()
print("这句话永远都会执行")
```
在这个例子中,无论是否发生`FileNotFoundError`异常,`finally`块中的代码都会执行,确保文件被正确关闭。
通过使用`try-except`语句,你可以有效地捕获和处理程序中可能出现的异常,从而提高程序的健壮性和用户体验。