Go to the first, previous, next, last section, table of contents.
-
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 section 11.4.1 The Package Exceptions. 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 section A.8.2 File Management
exception
when E : Name_Error =>
Put("Cannot open input file : ");
Put_Line(Exception_Message(E)); -- See section 11.4.1 The Package Exceptions
raise;
end;
Go to the first, previous, next, last section, table of contents.