Python没有捕获try/except错误

Mar*_*ark 2 python error-handling

我是Python的新手.如果我的问题听起来很愚蠢,请原谅我.

下面的代码会引发错误,但try/except不会捕获错误.我经历过很多次,但看不出是什么问题.

非常感谢,如果这里有任何大师可以向我展示问题.

谢谢你的时间.

import decimal

try:
    Amount = str(decimal.Decimal('2.675a').quantize(decimal.Decimal('.01'), rounding=decimal.ROUND_HALF_UP))
    print Amount
except ValueError:
    print 'Error'
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

File "C:\Python27\lib\decimal.py", line 548, in __new__
  "Invalid literal for Decimal: %r" % value)
File "C:\Python27\lib\decimal.py", line 3866, in _raise_error
  raise error(explanation)
InvalidOperation: Invalid literal for Decimal: '2.675a'
Run Code Online (Sandbox Code Playgroud)

Jam*_*dge 5

代码片段引发的错误是一个decimal.InvalidOperation例外.此异常不是子类,ValueError因此与您的except子句不匹配.

我建议阅读有关错误和异常处理的教程部分,以获得有关如何处理Python代码中的错误的更多概述.

  • 不要只是将其更改为裸露,除了:在一些明确定义的情况之外,您应该只捕获预期会发生的错误.因此,如果您期望"InvalidOperation"错误(例如,因为您是从提供的字符串创建小数对象),请直接捕获该异常.如果你抓住了一切,它将隐藏真正的问题并使你的程序更难调试. (3认同)