> > Why is it that user-defined exceptions are treated in a different manner
> > from the pre-defined ones?  What happens to the <LT> character (which I
> > assume to be remaining in the buffer and causing the loop) in the
> > Range_Error situation?
> Try entering eg 1 0 1 x x x RET:

Ada.Text_IO.Get is defined to read only legal characters; if it raises an
exception it reads NOTHING. Therefore, the illegal characters remain in the
input stream; if you do the same read again, you'll get the same error
(because the same characters are still there).

This behavior was defined in Ada 83, and Ada 95 left it alone for
compatibility purposes. This is the number one not-a-bug bug report that we
get here at RRS, and I wish it had been defined more intuitively...