首页 论坛 置顶 Python中的断言与自定义错误抛出

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • #25063

    今天,我们将深入学习错误处理,了解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 抛出内置或自定义异常
      • 如何定义和使用自己的异常类
      • 业务逻辑和错误报告的实际案例

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 哎呀,回复话题必需登录。