检测异常类型

2024-04-25 04:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我定义了一组异常,这些异常会根据问题以及用户的自定义消息而引发。你知道吗

我想开发一种使用这些自定义异常的错误处理机制,让它们冒泡到更高级别的日志类,并最终发送给用户,这样我们就可以提供反馈并告诉他们要修复什么。它甚至可能是后端系统出了问题,所以他们会知道稍后再来。你知道吗

但是,如果它不是手动创建的异常之一,并且是系统异常(这些异常正在引发,但包装在自定义异常中),我将返回一个常规错误。你知道吗

当我处理我的异常时,有什么好方法可以检测它是我的异常还是我没有解释的异常?你知道吗

我在考虑将所有异常子类化到一个带有自定义属性的基本异常下,并在异常冒泡时检查它,但这看起来有点像黑客。你知道吗

谢谢


Tags: 方法用户消息属性定义系统错误手动
1条回答
网友
1楼 · 发布于 2024-04-25 04:38:15

可以从单个类型派生所有异常。许多主要的Python库都这样做。你知道吗

现在,看看我是如何从共享基类派生出B的?你知道吗

class A(Exception):
    pass

class B(A):
    pass

让我们看看它是否有效:

>>> try:
>>>     raise B
>>> except A:
>>>     print("Caught")
>>>     
Caught

它不捕捉不相关的异常?你知道吗

>>> try:
>>>     [][1]
>>> except A:
>>>     print("Caught")
>>>     
IndexError: list index out of range

太好了。你知道吗

继承是您的朋友:只需从您定义的单个基本异常中创建子类,您就可以尝试显式地捕获该异常、记录并重试它。如果它不是来自您的库,则不会捕获错误。你知道吗

相关问题 更多 >