这似乎是一个简单的Python问题,但它让我挠头。我希望下面的代码打印“catch[<;class'decimal.ConversionSyntax'>;]”
它不是调用特定的except decimal.ConversionSyntax
异常处理程序,而是使用泛型except Exception as ex
并打印出“exception[<;class'decimal.ConversionSyntax'>;]未在前面的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
一些诊断:
decimal.InvalidOperation
是您实际上应该查找的类。即使异常的字符串表示提到了decimal.ConversionSyntax
,并且它确实是decimal.InvalidOperation
的一个子类,基类还是被提升了相关问题 更多 >
编程相关推荐