Python异常处理:优雅地应对错误,保障代码健壮性
发布时间: 2024-06-20 04:21:18 阅读量: 63 订阅数: 30
![Python异常处理:优雅地应对错误,保障代码健壮性](https://img-blog.csdnimg.cn/4ae149e329fe41f8abe50bc1608f690d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5YC-5Z-O56OK5Y2_,size_20,color_FFFFFF,t_70,g_se,x_16)
# 1. Python异常处理概述
异常处理是Python中处理错误和异常情况的重要机制。它允许程序员优雅地处理意外事件,从而提高代码的健壮性和可维护性。Python的异常处理机制包括:
- **异常的分类和层次结构:**Python中的异常被组织成一个层次结构,允许程序员根据异常的类型和严重性进行处理。
- **异常的捕获和处理:**`try-except-else-finally`语句用于捕获和处理异常。`try`块包含可能引发异常的代码,而`except`块指定处理特定异常类型的代码。
# 2. Python异常处理机制
### 2.1 异常的分类和层次结构
Python异常是内置的错误对象,用于表示程序执行期间发生的错误或异常情况。异常分为两大类:
- **内置异常:**由Python解释器本身定义的异常,如`IndexError`、`ValueError`和`TypeError`。
- **自定义异常:**由用户定义的异常,用于处理特定于应用程序的错误情况。
Python异常遵循一个层次结构,称为异常层次结构。该层次结构由基类`BaseException`开始,其子类包括`Exception`和`SystemExit`。大多数内置异常都是`Exception`的子类,而`SystemExit`用于表示程序退出。
### 2.2 异常的捕获和处理
Python提供了多种机制来捕获和处理异常:
#### 2.2.1 try-except-else-finally语句
`try-except-else-finally`语句用于捕获和处理异常。其语法如下:
```python
try:
# 代码块
except Exception1 as e1:
# 处理Exception1异常
except Exception2 as e2:
# 处理Exception2异常
else:
# 如果没有异常被触发,则执行此代码块
finally:
# 无论是否发生异常,始终执行此代码块
```
**示例:**
```python
try:
x = int(input("输入一个数字:"))
except ValueError:
print("输入无效,请输入整数")
else:
print("输入有效,数字为:", x)
finally:
print("程序结束")
```
#### 2.2.2 raise和reraise语句
`raise`语句用于手动触发异常。其语法如下:
```python
raise Exception("错误消息")
```
**示例:**
```python
def divide(a, b):
if b == 0:
raise ValueError("除数不能为0")
return a / b
```
`reraise`语句用于重新触发当前正在处理的异常。其语法如下:
```python
reraise()
```
**示例:**
```python
try:
# 代码块
except Exception as e:
print("发生异常:", e)
reraise()
```
### 2.3 异常的自定义和扩展
#### 2.3.1 自定义异常类
我们可以定义自己的异常类来处理特定于应用程序的错误情况。自定义异常类必须继承自`Exception`类。其语法如下:
```python
class CustomException(Exception):
def __init__(self, message):
super().__init__(message)
```
**示例:**
```python
class FileReadError(Exception):
def __init__(self, filename):
super().__init__(f"无法读取文件:{filename}
```
0
0