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
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 (see 11.2). Two choices in different exception_handlers of the same handled_sequence_of_statements (see 11.2) 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.
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.
10
The execution of a handled_sequence_of_statements consists of the execution of the sequence_of_statements (see 5.1). The optional handlers are used to handle any exceptions that are propagated by the sequence_of_statements (see 5.1).
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;