Normally it is not possible to raise an exception with
a message from a subprogram in a pure package, since the
necessary types and subprograms are in
which is not a pure unit.
GNAT.Exceptions provides a
facility for getting around this limitation for a few
predefined exceptions, and for example allow raising
Constraint_Error with a message from a pure subprogram.