Python2和Python3的异常处理差异:try-except到raise的进化
发布时间: 2024-06-23 15:35:30 阅读量: 8 订阅数: 14 ![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/col_vip.0fdee7e1.png)
![Python2和Python3的异常处理差异:try-except到raise的进化](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 中的异常处理主要通过 `try-except` 语句实现。
`try-except` 语句将代码块包裹在 `try` 块中,如果 `try` 块中的代码执行期间发生错误,则会执行 `except` 块中的代码。`except` 块可以指定要处理的特定异常类型,或者使用 `except:` 语句来处理所有异常。
# 2. try-except 语句
### 2.1 try-except-else-finally 语法
Python 中的 `try-except` 语句用于处理异常情况。其基本语法如下:
```python
try:
# 要执行的代码块
except Exception1 as e1:
# 处理 Exception1 异常的代码块
except Exception2 as e2:
# 处理 Exception2 异常的代码块
else:
# 没有异常发生时执行的代码块
finally:
# 无论是否发生异常,都会执行的代码块
```
其中:
- `try` 块包含要执行的代码。
- `except` 块用于处理特定类型的异常。每个 `except` 块可以处理一种或多种异常类型。
- `else` 块在 `try` 块中没有发生异常时执行。
- `finally` 块在 `try` 块或 `except` 块执行后始终执行,无论是否发生异常。
### 2.2 异常处理的流程
当 Python 执行 `try` 块中的代码时,它会尝试执行所有语句。如果执行过程中遇到异常,则 Python 会搜索与该异常类型匹配的第一个 `except` 块。如果找到匹配的 `except` 块,则 Python 会执行该块中的代码并继续执行 `finally` 块。如果找不到匹配的 `except` 块,则 Python 会将异常传递给调用方。
### 2.3 异常对象的属性和方法
当发生异常时,Python 会创建一个异常对象。该对象包含有关异常的信息,包括:
- `type`:异常类型。
- `args`:异常参数。
- `message`:异常消息。
异常对象还提供了以下方法:
- `__str__()`:返回异常消息。
- `__repr__()`:返回异常的完整表示。
**代码块:**
```python
try:
raise ValueError("This is a value error.")
except ValueError as e:
print(e.type) # <class 'ValueError'>
print(e.args) # ('This is a value error',)
print(e.message) # This is a value error.
```
**逻辑分析:**
此代码块演示了如何访问异常对象的属性和方法。它首先引发一个 `ValueError` 异常,然后捕获该异常并打印其类型、参数和消息。
# 3. raise 语句
### 3.1 raise 语法和用法
`raise` 语句用于手动引发异常。其语法如下:
```python
raise [exception_class] [, args] [, traceback]
```
其中:
* `exception_class`:要引发的异常类。
* `args`:传递给异常类的参数,用
0
0
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)