我正在嘗試捕獲 DivisionUndefined 錯誤。但是我只能捕獲父錯誤 InvalidOperation。
from decimal import Decimal, DivisionUndefined
try:
Decimal('0')/Decimal('0')
except DivisionUndefined:
print('spam')
預期輸出:
spam
實際輸出:
Traceback (most recent call last):
File "C:\test.py", line 4, in <module>
Decimal('0')/Decimal('0')
decimal.InvalidOperation: [<class 'decimal.DivisionUndefined'>]
uj5u.com熱心網友回復:
從堆疊跟蹤中可以看出,引發的例外不是DivisionUndefined
但是InvalidOperation
。因此,為了抑制例外,您應該捕獲InvalidOperation
:
from decimal import Decimal, InvalidOperation
try:
Decimal('0')/Decimal('0')
except InvalidOperation:
print('spam')
如果您真的只想處理這種DivisionUndefined
情況,我想您可以執行以下操作:
from decimal import Decimal, DivisionUndefined, InvalidOperation
try:
Decimal('0')/Decimal('0')
except InvalidOperation as err:
if err.args[0][0] is DivisionUndefined:
print('spam')
else:
raise err
但我不建議這樣做,因為既沒有記錄err.args
也沒有DivisionUndefined
記錄本身的結構。
順便說一句,如果你只想抑制例外,你可能想要這個:
from decimal import Decimal, InvalidOperation, getcontext
c = getcontext()
c.traps[InvalidOperation] = False
Decimal('0')/Decimal('0')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494834.html