鱼C论坛

 找回密码
 立即注册
查看: 249|回复: 0

[技术交流] BaseException--PythonBIF(4)

[复制链接]
发表于 2025-1-27 14:18:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原文:

  1. Help on class BaseException in module builtins:

  2. class BaseException(object)
  3. |  Common base class for all exceptions
  4. |
  5. |  Built-in subclasses:
  6. |      BaseExceptionGroup
  7. |      Exception
  8. |      GeneratorExit
  9. |      KeyboardInterrupt
  10. |      ... and 1 other subclasses
  11. |
  12. |  Methods defined here:
  13. |
  14. |  __getattribute__(self, name, /)
  15. |      Return getattr(self, name).
  16. |
  17. |  __init__(self, /, *args, **kwargs)
  18. |      Initialize self.  See help(type(self)) for accurate signature.
  19. |
  20. |  __reduce__(self, /)
  21. |      Helper for pickle.
  22. |
  23. |  __repr__(self, /)
  24. |      Return repr(self).
  25. |
  26. |  __setstate__(self, object, /)
  27. |
  28. |  __str__(self, /)
  29. |      Return str(self).
  30. |
  31. |  add_note(self, object, /)
  32. |      Exception.add_note(note) --
  33. |      add a note to the exception
  34. |
  35. |  with_traceback(self, object, /)
  36. |      Exception.with_traceback(tb) --
  37. |      set self.__traceback__ to tb and return self.
  38. |
  39. |  ----------------------------------------------------------------------
  40. |  Static methods defined here:
  41. |
  42. |  __new__(*args, **kwargs)
  43. |      Create and return a new object.  See help(type) for accurate signature.
  44. |
  45. |  ----------------------------------------------------------------------
  46. |  Data descriptors defined here:
  47. |
  48. |  __cause__
  49. |      exception cause
  50. |
  51. |  __context__
  52. |      exception context
  53. |
  54. |  __dict__
  55. |
  56. |  __suppress_context__
  57. |
  58. |  __traceback__
  59. |
  60. |  args
复制代码

翻译:

  1. 模块内置类中有关 BaseException 的帮助:

  2. 类 BaseException(object)
  3. | 所有异常的通用基类
  4. |
  5. | 内置子类:
  6. | BaseExceptionGroup
  7. | 异常
  8. | 生成器退出
  9. | 键盘中断
  10. | ... 和 1 个其他子类
  11. |
  12. | 这里定义的方法:
  13. |
  14. | __getattribute__(self, name, /)
  15. | 返回 getattr(self,name)。
  16. |
  17. | __init__(self, /, *args, **kwargs)
  18. | 初始化自我。 有关准确的签名,请参见 help(type(self))。
  19. |
  20. | __reduce__(self, /)
  21. | pickle 的助手。
  22. |
  23. | 返回 repr(self)。
  24. | 返回 repr(self)。
  25. |
  26. | __setstate__(self, object, /)
  27. |
  28. |__str__(self, /)
  29. | 返回 str(self)。
  30. |
  31. | add_note(self, object, /)
  32. | Exception.add_note(note) --
  33. | 为异常添加注释
  34. |
  35. | with_traceback(self, object, /)
  36. | Exception.with_traceback(tb) -- | 为异常添加注释。
  37. | 将 self.__traceback__ 设为 tb 并返回 self。
  38. |
  39. | ----------------------------------------------------------------------
  40. | 此处定义的静态方法:
  41. |
  42. | __new__(*args, **kwargs)
  43. | 创建并返回一个新对象。 有关准确的签名,请参见 help(type)。
  44. |
  45. | ----------------------------------------------------------------------
  46. | 此处定义的数据描述符:
  47. |
  48. | __cause__
  49. | 异常原因
  50. |
  51. | __context__
  52. | 异常上下文
  53. |
  54. | __dict__
  55. |
  56. | __suppress_context__
  57. |
  58. | __traceback__
  59. |
  60. | args
复制代码

BaseException是python所有内置异常类的父类.任何你自己定义的异常类,如果你希望它继承 Python 内置的异常处理行为,可以直接或间接地继承 BaseException 类.
举例:

  1. class WithdrawalError(BaseException):
  2.     def __init__(self, balance, amount):
  3.         self.balance = balance
  4.         self.amount = amount

  5.     def __str__(self):
  6.         return (f'Error: Insufficient balance ({self.balance}) '
  7.                 f'to withdraw {self.amount}')

  8. def withdraw(balance, amount):
  9.     if balance < amount:
  10.         raise WithdrawalError(balance, amount)
  11.     else:
  12.         return balance - amount

  13. try:
  14.     balance = 100
  15.     withdraw_amount = 200
  16.     new_balance = withdraw(balance, withdraw_amount)
  17.     print('Withdrawal successful. New balance:', new_balance)
  18. except WithdrawalError as e:
  19.     print(e)
复制代码

在这个例子中,我们定义了一个自定义异常类 WithdrawalError,它继承自 BaseException。当尝试从账户中提取金额超过余额时,我们会引发 WithdrawalError 异常.
在 withdraw 函数中,我们检查账户余额是否足够,如果不足,则抛出 WithdrawalError 异常。在try块中,我们尝试调用withdraw函数,并处理可能抛出的 WithdrawalError 异常。如果抛出了异常,我们捕获并打印异常消息,否则,我们打印提款成功的消息和新的余额。
#上面的例子是从网上找的,自己想不出啥来了

与Exception的区别:
Exception是BaseException的子类,作为子类的 Exception 无法截获父类 BaseException 类型的错误.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-6 01:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表