Exception Handlers
Author: JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor

Contents Index Search Previous Next

# 11.2 Exception Handlers

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

#### Syntax

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;`

Contents Index Search Previous Next Legal