Python 未捕获异常decimal.ConversionSyntax
这似乎是一个简单的Python问题,但它让我挠头。我希望下面的代码打印“catch[]” 它不是调用特定的Python 未捕获异常decimal.ConversionSyntax,python,exception,Python,Exception,这似乎是一个简单的Python问题,但它让我挠头。我希望下面的代码打印“catch[]” 它不是调用特定的exception decimal.ConversionSyntax异常处理程序,而是将通用的exception作为ex并打印出“exception[]未捕获到前面的exception子句中” 我错过了什么明显的东西吗?感谢您的见解,谢谢 import decimal amount = 'this is not a valid decimal string' try: amoun
exception decimal.ConversionSyntax
异常处理程序,而是将通用的exception作为ex
并打印出“exception[]未捕获到前面的exception子句中”
我错过了什么明显的东西吗?感谢您的见解,谢谢
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
$python3/tmp/decimal-exception.py
在前一个except子句中未捕获异常[]
一些诊断:
>>> try:
... decimal.Decimal(amount)
... except Exception as e:
... f = e
...
>>> f
InvalidOperation([<class 'decimal.ConversionSyntax'>])
>>> f.__class__
<class 'decimal.InvalidOperation'>
>>试试:
... 小数点。小数点(金额)
... 例外情况除外,如e:
... f=e
...
>>>f
无效操作([]))
>>>f._类__
decimal.invalidooperation
是您实际上应该查找的类。尽管异常的字符串表示提到了decimal.ConversionSyntax
,并且它确实是decimal.invalidooperation
的子类,基类还是被提升了。它似乎抛出了一个decimal.invalidooperation
,不是直接的decimal.ConversionSyntax
.Perfect响应——非常感谢您深入了解异常如何返回其字符串表示形式。捕获invalidooperation
异常是我想要的。再次感谢!