- (1)
- The response to one or more exceptions is specified by an exception_handler.
(2)
handled_sequence_of_statements ::=
sequence_of_statements
[exception
exception_handler
{exception_handler}]
(3)
exception_handler ::=
when [choice_parameter_specification:] exception_choice {| exception_choice} =>
sequence_of_statements
(4)
choice_parameter_specification ::= defining_identifier
(5)
exception_choice ::= exception_name | others
Legality Rules
- (6)
- 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.
- (7)
- 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.
- (8)
- An exception_name of a choice shall not denote an exception declared in a
generic formal package.
Static Semantics
- (9)
- 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
- (10)
- 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
- (11)
- Example of an exception handler:
(12)
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;
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12