簡體   English   中英

未捕獲異常小數.ConversionSyntax

[英]Exception decimal.ConversionSyntax not caught

這似乎是一個簡單的 Python 問題,但它讓我摸不着頭腦。 我希望以下代碼打印“Caught [<class 'decimal.ConversionSyntax'>]”。

而不是調用特定的except decimal.ConversionSyntax異常處理程序,而是通過通用except Exception as ex並打印出“Exception [<class 'decimal.ConversionSyntax'>] not catch in previous except 子句”。

我錯過了一些明顯的東西嗎? 感謝任何見解 - 謝謝!

import decimal

amount = 'this is not a valid decimal string'

try:
    amount = decimal.Decimal(amount).quantize(decimal.Decimal('.01'))
except decimal.ConversionSyntax as cex:
    print(f'Caught {cex}')
except Exception as ex:
    print(f'Exception {ex} not caught in previous except clause')

運行代碼:

$ python3 /tmp/decimal-exception.py 
Exception [<class 'decimal.ConversionSyntax'>] not caught in previous except clause

一些診斷:

>>> try:
...   decimal.Decimal(amount)
... except Exception as e:
...   f = e
...
>>> f
InvalidOperation([<class 'decimal.ConversionSyntax'>])
>>> f.__class__
<class 'decimal.InvalidOperation'>

decimal.InvalidOperation是您實際上應該尋找的 class 。 即使異常的字符串表示提到decimal.ConversionSyntax ,而且這確實是decimal.InvalidOperation的子類,但基礎 class 還是被提出了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM