今天,我们将深入学习错误处理,了解Python提供的两个强大工具:
- ✅
assert
语句用于调试 - 🔥
raise
关键字用于创建自定义错误
这些工具帮助我们及早捕捉错误,编写自验证代码,并优雅地处理无效输入——特别是在较大的程序或API中。
📦 你将学习到的内容
- 什么是断言以及如何使用它们
- 何时使用
assert
与异常 - 如何引发内置和自定义异常
- 实际案例
- 最佳实践
✅ 1. 什么是assert
?
assert
是一种调试工具,用于测试某个条件是否为True
。
如果条件为False
,它会引发一个AssertionError
并停止程序。
🔹 语法:
assert condition, "错误信息(可选)"
🧪 示例 1:简单断言
age = 20
assert age >= 18, "你必须至少18岁"
print("访问已授权!")
如果
age = 16
,你会看到:AssertionError: 你必须至少18岁
🤔 何时使用 assert
- 当你想要检查必须始终为真的条件
- 在开发和调试期间非常有用
- 不用于用户输入验证(请使用异常处理)
✅ 有助于及早捕捉内部逻辑错误
🔥 2. 使用 raise
引发错误
raise
关键字允许你在条件不满足时手动触发异常。
🔹 示例:引发内置错误
age = -5
if age < 0:
raise ValueError("年龄不能为负数。")
这将停止程序并显示:
ValueError: 年龄不能为负数。
🛠️ 3. 创建自定义异常
您可以通过扩展 Python 的 Exception
类来定义自己的错误类。
🔹 示例:
class TooYoungError(Exception):
pass
def check_age(age):
if age < 18:
raise TooYoungError("您必须年满 18 岁。")
check_age(16) # 引发 TooYoungError
自定义异常在应用程序具有特定规则时非常有用,例如最低订单金额、登录限制或年龄验证。
🚀 真实世界示例:银行取款
class InsufficientFundsError(Exception):
pass
def withdraw(balance, amount):
if amount > balance:
raise InsufficientFundsError("余额不足。")
return balance - amount
print(withdraw(1000, 1200)) # 引发错误
🧠 断言与抛出:关键区别
特性 | assert |
raise |
---|---|---|
使用场景 | 调试,内部检查 | 验证输入,真实错误 |
运行时使用 | 通常在生产环境中移除 | 在生产环境中使用 |
异常类型 | 始终引发 AssertionError |
可以引发任何类型 |
消息 | 可选,仅限字符串 | 自定义消息和类型 |
📌 最佳实践
- ✅ 使用
assert
进行内部开发时检查 - ✅ 使用
raise
处理用户可见或预期的错误情况 - ❌ 不要依赖
assert
进行输入验证 - ✅ 创建自定义异常以清晰地处理业务逻辑
- 🧼 保持错误消息清晰且有用
今天你学到了:
-
- 如何使用
assert
在开发过程中验证假设 - 如何使用
raise
抛出内置或自定义异常 - 如何定义和使用自己的异常类
- 业务逻辑和错误报告的实际案例
- 如何使用