🚨 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 | 主动抛出异常 |
自定义异常类 | --- | 更语义化、灵活的错误设计 |