Skip to main content

异常

🐠异常:异常是指程序运行过程中出现的错误,导致程序无法按正常流程执行。与编译时错误不同,异常是在程序运行时发生的。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