跳到主要内容

🚨 Python 错误处理(异常机制)

❓ 为什么需要错误处理?

在实际开发中,程序运行过程中可能会出现很多不可预知的错误(比如除零、文件不存在、输入类型错误等)。如果我们不处理这些错误,程序会崩溃终止,用户体验极差。

为此,Python 提供了异常(Exception)机制,让你可以“捕获错误”,优雅地处理异常情况,让程序稳定运行。


✅ try...except:基础用法

使用 try...except 结构捕获并处理错误,防止程序中断。

尝试:
x = 10 / 0 # 会触发除零错误
捕获 除零错误:
打印("发生除零错误,不能除以 0")

⭐️ 捕获到的错误例如:除零错误(ZeroDivisionError)、文件不存在错误(FileNotFoundError)、中断错误(InterruptedError)等,都是Python 内置错误 ⭐️


✅ 捕获多个异常

你可以同时捕获多种类型的错误。

尝试:
x = int("abc")
捕获 (值错误, 类型错误):
打印("发生值错误或类型错误")

✅ 捕获所有异常(不推荐乱用)

尝试:
执行某些操作
捕获 错误 作为 错误:
打印(f"捕获到异常: {错误}")

使用 Exception 可以捕获所有常见错误,但不建议滥用,否则可能隐藏真正的问题。


✅ finally:无论是否异常,都会执行

finally 块中放置清理代码,比如关闭文件、释放资源等。

尝试:
文件 = open("数据.txt", "r")
内容 = 文件.read()
捕获 文件不存在错误:
打印("文件不存在")
最终:
打印("无论是否异常,这里都会执行")

✅ raise:主动抛出异常

你可以通过 raise 主动触发异常(用于校验参数、控制流程等)。

检查年龄(年龄):
如果 年龄 < 0:
引发 值错误("年龄不能为负数")

检查年龄(-5)

✅ 自定义异常类

你可以创建自定义异常类型,让程序更语义化。

我的_错误(继承 Exception):
__初始化__(self, 信息):
self.信息 = 信息

尝试:
抛出 我的_错误("出错啦")
捕获 我的错误 作为 e:
打印(f"捕获到自定义异常: {e.信息}")

🧠 小结:错误处理结构一览

结构英文作用
尝试try放置可能出错的代码块
捕获except捕获指定异常
捕获 异常except Exception捕获所有标准异常(慎用)
最终finally总会执行的清理代码块
抛出raise主动抛出异常
自定义异常类---更语义化、灵活的错误设计