Python Glossary English

все 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Сообщить о неточности