首页 › 论坛 › 置顶 › Python中的断言与自定义错误抛出
正在查看 1 个帖子:1-1 (共 1 个帖子)
-
作者帖子
-
2025-07-14 17:27 #25063Q QPY课程团队管理员
今天,我们将深入学习错误处理,了解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): passdef withdraw(balance, amount): if amount > balance: raise InsufficientFundsError("余额不足。") return balance - amount print(withdraw(1000, 1200)) # 引发错误
🧠 断言与抛出:关键区别
特性 assertraise使用场景 调试,内部检查 验证输入,真实错误 运行时使用 通常在生产环境中移除 在生产环境中使用 异常类型 始终引发 AssertionError可以引发任何类型 消息 可选,仅限字符串 自定义消息和类型
📌 最佳实践
- ✅ 使用
assert进行内部开发时检查 - ✅ 使用
raise处理用户可见或预期的错误情况 - ❌ 不要依赖
assert进行输入验证 - ✅ 创建自定义异常以清晰地处理业务逻辑
- 🧼 保持错误消息清晰且有用
今天你学到了:
-
- 如何使用
assert在开发过程中验证假设 - 如何使用
raise抛出内置或自定义异常 - 如何定义和使用自己的异常类
- 业务逻辑和错误报告的实际案例
- 如何使用
- ✅
-
作者帖子
正在查看 1 个帖子:1-1 (共 1 个帖子)
- 哎呀,回复话题必需登录。