繁体   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