В Python 2 создание десятичного числа с недопустимой строкой приводит к полезному сообщению об ошибке:
>>> import decimal
>>> decimal.Decimal('spam')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/decimal.py", line 547, in __new__
"Invalid literal for Decimal: %r" % value)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/decimal.py", line 3872, in _raise_error
raise error(explanation)
decimal.InvalidOperation: Invalid literal for Decimal: 'spam'
В то время как Python 3 выдает не очень полезное сообщение:
>>> import decimal
>>> decimal.Decimal('spam')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
Есть ли способ получить полезное сообщение типа «Неверный литерал для десятичного:« спам »» из исключения в Python 3?
Я использую Python 2.7.15 и Python 3.7.2, оба на darwin.
Дополнения :
Похоже, что у Python 2 когда-то было не очень полезное сообщение для десятичного числа. InvalidOperation: https://bugs.python.org/issue1770009
ThisСитуация выглядит аналогично, но большинство из них идет через голову: https://bugs.python.org/issue21227