《python核心编程》第十章:错误和异常1
需积分: 0 125 浏览量
更新于2022-08-08
收藏 24KB DOCX 举报
的 `except` 来捕获所有类型的异常,但这通常不是一个好的实践,因为这样做可能会隐藏代码中的其他问题。更具体地捕获异常可以帮助我们更好地理解程序中发生了什么,并提供更精确的错误处理。
10.2 Python 中的检测和处理异常
1、`try-except`:这是最基础的异常处理结构。在 `try` 块中,你放置可能抛出异常的代码。如果在 `try` 块内发生异常,执行就会立即跳转到与之匹配的 `except` 块。例如:
```python
try:
# 可能抛出异常的代码
x = 1 / 0
except ZeroDivisionError:
print("不能除以零!")
```
2、`try-finally`:无论是否发生异常,`finally` 块中的代码都会被执行。这通常用于清理资源,如关闭文件或网络连接。例如:
```python
try:
f = open('file.txt')
# 读取文件内容
except IOError:
print("无法打开文件!")
finally:
if 'f' in locals(): # 确保只在文件已打开时关闭
f.close()
```
3、`try-except-finally` 复合语句:结合了 `try-except` 和 `try-finally`,在处理完异常后执行 `finally` 块的代码。例如:
```python
try:
# 可能抛出异常的代码
x = 1 / 0
except ZeroDivisionError:
print("不能除以零!")
finally:
print("无论是否发生异常,这行总会被执行")
```
10.3 触发异常
你可以使用 `raise` 语句来主动触发一个异常。例如,如果你想检查一个值是否为负,你可以这样写:
```python
def check_value(value):
if value < 0:
raise ValueError("值不能为负")
```
10.4 上下文管理
Python 的上下文管理协议(通过 `__enter__` 和 `__exit__` 方法)使得资源的获取和释放变得简单。例如,使用 `with` 语句可以确保文件在使用后被正确关闭:
```python
with open('file.txt') as f:
content = f.read()
# 文件在这里会被自动关闭,即使在读取过程中出现异常
```
10.5 断言
`assert` 语句用于在开发阶段进行条件检查。如果条件为 `False`,它会抛出 `AssertionError`。这是一种确保代码逻辑正确的有用工具:
```python
assert isinstance(x, int), "x 必须是整数"
```
10.6 标准异常
Python 提供了一系列内置的标准异常,如 `ValueError`、`TypeError`、`ImportError` 等。这些异常代表了不同类型的错误,比如类型不匹配、值错误或导入模块失败等。
10.7 创建异常
如果你需要自定义异常,你可以继承自 `Exception` 类或其子类。例如:
```python
class CustomError(Exception):
pass
try:
raise CustomError("这是一个自定义异常")
except CustomError as e:
print(e)
```
Python 的错误和异常处理机制提供了强大的工具来处理程序运行时可能出现的问题,帮助开发者编写健壮的代码。通过理解并熟练运用这些概念,你可以更好地调试和维护你的程序。
白绍伟
- 粉丝: 18
- 资源: 287
最新资源
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系
- file_241223_024438_84523.pdf
- 质子交膜燃料电池PEMFC Matlab simulink滑模控制模型,过氧比控制,温度控制,阴,阳极气压控制
- IMG20241223015444.jpg
- 模块化多电平变器(MMC),本模型为三相MMC整流器 控制策略:双闭环控制、桥臂电压均衡控制、模块电压均衡控制、环流抑制控制策略、载波移相调制,可供参考学习使用,默认发2020b版本及以上
- Delphi 12 控件之FlashAV FFMPEG VCL Player For Delphi v7.0 for D10-D11 Full Source.7z
- Delphi 12 控件之DevExpressVCLProducts-24.2.3.exe.zip
- Mysql配置文件优化内容 my.cnf
- 中国地级市CO2排放数据(2000-2023年).zip
- smart200光栅报警程序