Exception raised when a value does not meet the expected type or constraints for an operation.
:expected is either an atom naming the expected category
(for example :rounding_mode, :time_unit, :usage) or a
short string label describing the expected shape. :allowed_values,
when set, carries the closed list of acceptable values that the
rendered message will include.