comp.lang.ada
 help / color / mirror / Atom feed
From: enterpoop.mit.edu!ira.uka.de!math.fu-berlin.de!news.netmbx.de!Germany.EU. net!mcsun!julienas!cix!insage!marpinar@ucbvax.Berkeley.EDU  (Alain Marpinard)
Subject: Re: simple exception-handler
Date: 9 Feb 93 10:41:15 GMT	[thread overview]
Message-ID: <2838@cix.cict.fr> (raw)

In article 0@antpc.ant.uni-hannover.de, otte@antpc.ant.uni-hannover.de (Herr Ot
te) writes:
>While I am trying to test my packages and subprograms,
>I want to write an exception-handler, which only puts
>the name of the raised exception to the standard output.
>The first solution, that I found, was :
>
>with Text_IO ;
>procedure Error_IO_Test is
>....
>exception
>  when CONSTRAINT_ERROR => Text_IO.Put_Line ("CONSTRAINT_ERROR");
>  when NUMERIC_ERROR    => Text_IO.Put_Line ("NUMERIC_ERROR");
>  when PROGRAM_ERROR    => Text_IO.Put_Line ("PROGRAM_ERROR");
>  when STORAGE_ERROR    => Text_IO.Put_Line ("STORAGE_ERROR");
>  when TASKING_ERROR    => Text_IO.Put_Line ("TASKING_ERROR");
>end Error_IO_Test;
>
>The number of lines in the exception-handler will increase,
>if I take care not only for the standard exceptions, but for
>the Text_IO exceptions and my own user-defined exceptions.
>For this reason, I prefer a solution like this :
>
>with Text_IO ;
>procedure Error_IO_Test is
>....
>exception
>  when others => Text_IO.Put_Line ( <Name_of_the_Error> );
>end Error_IO_Test;

In Ada 9X Mapping (Version 4.0, Intermetrics, December 91),
you find this definition of exception handlers :

   exception_handler_part ::=
        exception exception_handler {exception_handler}

   exception_handler ::=
        when [choice_parameter:] exception_choice {| exception_choice} =>
              sequence_of_statements

    choice_parameter ::= identifier

and two supplementary functions are provided in SYSTEM:

   function EXCEPTION_NAME (X: EXCEPTION_OCCURRENCE)
        return STRING;
   function EXCEPTION_INFORMATION(X: EXCEPTION_OCCURRENCE)
        return STRING;

So you will be able to write something like this:

exception
   when ANY_EXCEPTION : others =>
         Text_IO.Put_Line( EXCEPTION_NAME(ANY_EXCEPTION));
end Error_IO_Test;

-- or something like this :
--     Text_IO.Put_Line(OUTPUT_FILE, EXCEPTION_NAME(ANY_EXCEPTION)
--          & "  " &  EXCEPTION_INFORMATION(ANY_EXCEPTION));
--      raise;

>Dirk Otte
>Institut fuer Allgemeine Nachrichtentechnik
>Technische Universitaet Hannover
>3000 Hannover 1
>Deutschland


---------------------------------------------------------------------------
Alain MARPINARD                               marpinar@insage.insa-tlse.fr
                                                    Fax : (33) 61 55 98 08

G.E.R.I.I.   (Groupe d'Etude et de Recherche en Informatique Industrielle)
D.G.E.                                      (Departement Genie Electrique)
I.N.S.A.                       (Institut National des Sciences Appliquees)
---------------------------------------------------------------------------

             reply	other threads:[~1993-02-09 10:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-02-09 10:41 Alain Marpinard [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-02-09  1:59 simple exception-handler David Emery
1993-02-08 22:40 Mark A Biggar
1993-02-08 19:36 cis.ohio-state.edu!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!h
1993-02-08 18:27 Kenneth Anderson
1993-02-08 10:21 enterpoop.mit.edu!ira.uka.de!Germany.EU.net!urmel.informatik.rwth-aachen.
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox