最近,我在我用于作業的一個存盤庫中遇到了一段奇怪的代碼。在這一部分中,使用布林值引發例外:
if current_run_row_count == 0:
raise InconsistentData(
"0 rows found", False,
)
InconsistentData從Exception類繼承:
class InconsistentData(Exception):
pass
我不明白這False對應于例外引發的作用。
首先,我的猜測是,這個例外是否實際上是一個警告是一個標記(我想我可能聽說過這樣的事情)。如果是True,則例外停止程式執行,如果是False,則不會停止并作為警告。反之亦然,但想法是一樣的。但是,我在 Python 檔案中找不到任何有關Exception引數的資訊——例如,這里和這里。
其次,我認為這可能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,還有另外兩個自定義例外:CustomException和ValidationError,當它們被引發時,它們沒有任何布林值,只有一個用文本表示的錯誤訊息。
uj5u.com熱心網友回復:
這可能是第二種選擇 - “這個 False 什么都不做,似乎是錯誤訊息的一部分”。我會接受@deceze 的回答:
它意味著作者想要的任何意思。正如您正確識別的那樣,它對例外本身沒有影響。這只是額外的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/482875.html
上一篇:Python雙函式遞回
