Python 异常中的奇怪布尔值

Strange boolean value in Python Exception

最近我在工作中使用的一个存储库中发现了一段奇怪的代码。在这部分中,使用布尔值引发异常:

if current_run_row_count == 0:
        raise InconsistentData(
            "0 rows found", False,
        )

InconsistentData 继承自 Exception class:

class InconsistentData(Exception):
    pass

我不明白这个 False 对应异常 raise 的作用。

首先我的猜测是这个异常是否真的是一个警告是某种标志(我想我可能听说过这样的话)。如果是True,则异常停止程序执行,如果是False,则不停止并作为警告。反之亦然,但想法是一样的。但是,我在 Python 文档中找不到有关 Exception 参数的任何信息 - 例如,here and here.

其次,我想也许这个 False 什么也没做,似乎是错误消息的一部分。我用两个不同的代码示例对其进行了测试。

第一个:

if 1 == 1:
    raise Exception("error", False)

print('Hello!')

输出:

Exception: ('error', False)

第二个:

if 1 == 1:
    raise Exception("error", True)

print('Hello!')

输出:

Exception: ('error', True)

所以,在两个代码示例中,都引发了异常并停止了程序执行,并且这个布尔值似乎是错误消息的一部分。但是,根据代码,我不知道为什么会有人将它包含在错误消息中。除了 InconsistentData,还有另外两个自定义异常:CustomExceptionValidationError,当它们被引发时,它们没有任何布尔值,只有一条用文本表示的错误消息。

这可能是第二个选项——“这个 False 什么都不做,似乎是错误消息的一部分”。我会接受 @deceze 回答:

It means whatever the author wants it to mean. It has no influence on the exception as such, as you have correctly identified. It's just additional data.