异常
🐠异常:异常是指程序运行过程中出现的错误,导致程序无法按正常流程执行。与编译时错误不同,异常是在程序运行时发生的。Python使用异常处理机制来捕获和处理这些错误,确保 程序不会因为错误而直接崩溃,可以通过合理的处理让程序继续运行或优雅地退出。
异常的分类
1、内置异常:Python 提供了很多内置的异常类,比如:
ZeroDivisionError
:除数为零错误。IndexError
:索引超出范围。KeyError
:字典中找不到指定键。TypeError
:类型不匹配错误。ValueError
:传入无效参数。FileNotFoundError
:文件未找到错误。
2、自定义异常:可以通过继承 Exception
类来自定义异常,适用于特定业务场景。
Python异常处理机制
🐟异常处理:Python 提供了
try-except
语句来捕获和处理异常,确保程序在遇到错误时不会直接崩溃。
1、基本语法
try:
# 可能会引发异常的代码
result = 10 / 0
except ZeroDivisionError as e:
# 异常处理代码
print(f"捕获到异常: {e}")
2、捕获多个异常
可以在一个 except 块中捕获多种异常,或者使用多个 except 分别处理不同异常。
try:
num = int("abc")
except (ValueError, TypeError) as e:
print(f"捕获到异常:{e}")
3、使用 else 和 finally
- else:如果 try 块中的代码没有抛出异常,则执行 else 块
- finally:无论是否抛出异常,finally 块中的代码都会执行,通常用于资源清理,如关闭文件或释放网络连接。
try:
result = 10 / 2
except ZeroDivisionError:
print("除数不能为零~")
else:
print(f"运算成功,结果是:{result}")
finally:
print("无论如何都会被执行的代码。")
运算成功,结果是:5.0
无论如何都会被执行的代码。
4、自定义异常
可以定义自己的异常类,继承 Exception ,用于特殊的业务需求。
class CustomError(Exception):
def __init__(self, message):
super().__init__(message)
try:
raise CustomError("这是一个自定义异常!")
except CustomError as e:
print(f"捕获到自定义异常:{e}")
异常链与抛出
- 抛出异常:使用 raise 主动抛出异常。
raise ValueError("参数错误!")
- 异常链:可以使用 raise from 语法,将一个异常与另一个异常关联,方便调试。
try:
int("abc")
except ValueError as e:
raise RuntimeError("转换失败") from e