DocAda(tm) is a productivity tool of KSCE

Prev | Up | Next | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

11.2 Exception Handlers

The response to one or more exceptions is specified by an exception_handler.

Syntax

   
       handled_sequence_of_statements ::=
            sequence_of_statements
         [exception
            exception_handler
           {exception_handler}]

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

       choice_parameter_specification ::= defining_identifier

       exception_choice ::= exception_name | others

Legality Rules

A choice with an exception_name covers the named exception. A choice with others covers all exceptions not named by previous choices of the same handled_sequence_of_statements. Two choices in different exception_handlers of the same handled_sequence_of_statements shall not cover the same exception.

A choice with others is allowed only for the last handler of a handled_sequence_of_statements and as the only choice of that handler.

An exception_name of a choice shall not denote an exception declared in a generic formal package.

Static Semantics

A choice_parameter_specification declares a choice parameter, which is a constant object of type Exception_Occurrence (see 11.4.1). During the handling of an exception occurrence, the choice parameter, if any, of the handler represents the exception occurrence that is being handled.

Dynamic Semantics

The execution of a handled_sequence_of_statements consists of the execution of the sequence_of_statements. The optional handlers are used to handle any exceptions that are propagated by the sequence_of_statements.

Examples

Example of an exception handler:

    
       begin
          Open(File, In_File, "input.txt");   -- see A.8.2
       exception
          when E : Name_Error =>
             Put("Cannot open input file : ");
             Put_Line(Exception_Message(E));  -- see 11.4.1
             raise;
       end;

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | Up | Next | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com