python 异常处理的核心概念和使用方法

发布时间:2025-05-16      访问量:43
在 Python 里,异常处理是保障程序健壮性的关键手段,能够应对运行时出现的错误。下面为你介绍异常处理的核心概念和使用方法。

1. 基础语法
借助 `try-except` 语句,程序可以捕获并处理异常。
python try: # 可能会引发异常的代码 result = 10 / 0 # 这行代码会引发 ZeroDivisionError except ZeroDivisionError: # 异常处理逻辑 print("错误:除数不能为零")

2. 捕获多种异常
你可以使用多个 `except` 子句来处理不同类型的异常。
python try: num = int("abc") # 会引发 ValueError result = 10 / num # 若 num 为 0,会引发 ZeroDivisionError except ValueError: print("错误:无法将字符串转换为整数") except ZeroDivisionError: print("错误:除数不能为零")

3. 获取异常信息
通过 `as` 关键字,能够获取异常对象,进而获取更详细的错误信息。
python try: file = open("nonexistent.txt", "r") except FileNotFoundError as e: print(f"错误:文件不存在 - {e}")

4. 通用异常捕获
使用 `Exception` 可以捕获所有未被单独处理的异常,但通常建议将其放在最后,避免掩盖特定错误。
python try: # 可能会引发异常的代码 data = {"key": "value"} print(data["nonexistent_key"]) # 会引发 KeyError except KeyError as e: print(f"错误:键不存在 - {e}") except Exception as e: print(f"发生未知错误:{e}")

5. `else` 子句
当 `try` 块中没有异常发生时,会执行 `else` 子句。
python try: result = 10 / 2 # 不会引发异常 except ZeroDivisionError: print("错误:除数不能为零") else: print(f"计算结果:{result}") # 当没有异常时执行

6. `finally` 子句
无论是否有异常发生,`finally` 子句中的代码都会被执行,常用于资源清理工作。
python try: file = open("test.txt", "r") content = file.read() except FileNotFoundError: print("错误:文件不存在") finally: if 'file' in locals(): file.close() # 确保文件被关闭 print("清理工作已完成")

7. 主动抛出异常
使用 `raise` 语句可以主动抛出异常。
python def calculate_age(year): current_year = 2025 # 假设当前年份是 2025 if year > current_year: raise ValueError(f"出生年份 {year} 不能晚于当前年份") return current_year - year try: age = calculate_age(2030) except ValueError as e: print(f"输入错误:{e}")

8. 自定义异常
你可以通过继承 `Exception` 类来创建自定义异常类。
python class InvalidEmailError(Exception): """当电子邮件格式无效时抛出此异常""" pass def validate_email(email): if "@" not in email: raise InvalidEmailError(f"无效的电子邮件地址:{email}") return True try: validate_email("example.com") except InvalidEmailError as e: print(f"验证失败:{e}")

9. 使用 `with` 语句
`with` 语句能够自动管理资源,避免手动进行资源关闭操作,例如文件操作。
python try: with open("test.txt", "r") as file: content = file.read() # 文件会在 with 块结束后自动关闭 except FileNotFoundError: print("错误:文件不存在")

10. 最佳实践
- 避免捕获过于宽泛的异常,要精准处理特定类型的异常。
- 利用 `logging` 模块记录异常信息,而不是简单地打印错误。
- 自定义异常时,要提供清晰的错误信息。
- 使用 `with` 语句来管理资源,防止资源泄漏。

异常处理是编写可靠 Python 程序必不可少的部分。通过合理运用这些机制,能够有效提升程序的容错能力和用户体验。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念