все Python 3Исключенияисключение
decimal.InvalidOperation
модульные исключения
Недопустимая операция decimal (напр. Decimal('nan') в сравнении на больше/меньше, деление 0/0).
Синтаксис
raise decimal.InvalidOperation
Частая ловушка на разборе ввода: Decimal("abc") кидает именно InvalidOperation, а не ValueError, как int("abc"), поэтому привычный except ValueError вокруг чтения числа её не поймает (общий except ArithmeticError — поймает). Ловушка на этот сигнал включена в контексте по умолчанию; если снять её через getcontext().traps, операция молча вернёт NaN, и дальше этот NaN протечёт через все вычисления, не выдав себя ничем, кроме липкого флага в getcontext().flags.
Примеры
import decimal
try:
raise decimal.InvalidOperation
except decimal.InvalidOperation as e:
print(type(e).__name__) # → InvalidOperation
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности