AARM95 - Raise Statements
Author: JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor

Contents Index Previous Next

# 11.3 Raise Statements

1
[A raise_statement raises an exception.]

#### Syntax

2
raise_statement ::= raise [exception_name];

#### Legality Rules

3
The name, if any, in a raise_statement shall denote an exception. A raise_statement with no exception_name (that is, a re-raise statement) shall be within a handler, but not within a body enclosed by that handler.

#### Dynamic Semantics

4
To raise an exception is to raise a new occurrence of that exception[, as explained in 11.4]. For the execution of a raise_statement with an exception_name, the named exception is raised. For the execution of a re-raise statement, the exception occurrence that caused transfer of control to the innermost enclosing handler is raised [again].
4.a
Implementation Note: For a re-raise statement, the implementation does not create a new Exception_Occurrence, but instead propagates the same Exception_Occurrence value. This allows the original cause of the exception to be determined.

#### Examples

5
Examples of raise statements:
6
`raise Ada.IO_Exceptions.Name_Error; -- see A.13`
7
`raise; -- re-raise the current exception`

#### Wording Changes from Ada 83

7.a
The fact that the name in a raise_statement has to denote an exception is not clear from RM83. Clearly that was the intent, since the italicized part of the syntax rules so indicate, but there was no explicit rule. RM83-1.5(11) doesn't seem to give the italicized parts of the syntax any force.

Contents Index Previous Next Legal