Ada Programming/Libraries/Ada.Exceptions
Appearance
This language feature is available from Ada 95 on.
Ada.Exceptions is a unit of the Predefined Language Environment since Ada 95.
The package Ada.Exceptions allows you to analyze exceptions you have caught, to raise exceptions with an associated message or to save exceptions occurrences for later processing.
Usage
[edit | edit source]The following example shows how to implement a "last resort" error handler which just displays the information related to the error which occurred.
with
Ada.Exceptions;procedure
Numeric_6is
package
Exeptrenames
Ada.Exceptions; ...exception
when
An_Exception :others
=> T_IO.Put_Line (Exept.Exception_Information (An_Exception));end
Try;
Specification
[edit | edit source]-- Standard Ada library specification -- Copyright (c) 2003-2018 Maxim Reznik <reznikmm@gmail.com> -- Copyright (c) 2004-2016 AXE Consultants -- Copyright (c) 2004, 2005, 2006 Ada-Europe -- Copyright (c) 2000 The MITRE Corporation, Inc. -- Copyright (c) 1992, 1993, 1994, 1995 Intermetrics, Inc. -- SPDX-License-Identifier: BSD-3-Clause and LicenseRef-AdaReferenceManual -- -------------------------------------------------------------------------with
Ada.Streams;package
Ada.Exceptionsis
pragma
Preelaborate (Exceptions);type
Exception_Idis
private
;pragma
Preelaborable_Initialization (Exception_Id); Null_Id :constant
Exception_Id;function
Exception_Name (Id :in
Exception_Id)return
String;function
Wide_Exception_Name (Id :in
Exception_Id)return
Wide_String;function
Wide_Wide_Exception_Name (Id :in
Exception_Id)return
Wide_Wide_String;type
Exception_Occurrenceis
limited
private
;pragma
Preelaborable_Initialization (Exception_Occurrence);type
Exception_Occurrence_Accessis
access
all
Exception_Occurrence; Null_Occurrence :constant
Exception_Occurrence;procedure
Raise_Exception (E :in
Exception_Id; Message :in
String := "");pragma
No_Return (Raise_Exception);function
Exception_Message (X :in
Exception_Occurrence)return
String;procedure
Reraise_Occurrence (X :in
Exception_Occurrence);function
Exception_Identity (X :in
Exception_Occurrence)return
Exception_Id;function
Exception_Name (X :in
Exception_Occurrence)return
String; -- Same as Exception_Name(Exception_Identity(X)).function
Wide_Exception_Name (X :in
Exception_Occurrence)return
Wide_String; -- Same as Wide_Exception_Name(Exception_Identity(X)).function
Wide_Wide_Exception_Name (X :in
Exception_Occurrence)return
Wide_Wide_String; -- Same as Wide_Wide_Exception_Name(Exception_Identity(X)).function
Exception_Information (X :in
Exception_Occurrence)return
String;procedure
Save_Occurrence (Target :out
Exception_Occurrence; Source :in
Exception_Occurrence);function
Save_Occurrence (Source :in
Exception_Occurrence)return
Exception_Occurrence_Access;procedure
Read_Exception_Occurrence (Stream :not
null
access
Ada.Streams.Root_Stream_Type'Class; Item :out
Exception_Occurrence);procedure
Write_Exception_Occurrence (Stream :not
null
access
Ada.Streams.Root_Stream_Type'Class; Item :in
Exception_Occurrence);for
Exception_Occurrence'Readuse
Read_Exception_Occurrence;for
Exception_Occurrence'Writeuse
Write_Exception_Occurrence;private
pragma
Import (Ada, Exception_Id);pragma
Import (Ada, Exception_Occurrence);pragma
Import (Ada, Null_Id);pragma
Import (Ada, Null_Occurrence);end
Ada.Exceptions;
See also
[edit | edit source]Wikibook
[edit | edit source]External examples
[edit source]- Search for examples of
Ada.Exceptions
in: Rosetta Code, GitHub (gists), any Alire crate or this Wikibook. - Search for posts related to
Ada.Exceptions
in: Stack Overflow, comp.lang.ada or any Ada related page.
Ada Reference Manual
[edit | edit source]Ada 95
[edit | edit source]Ada 2005
[edit | edit source]Ada 2012
[edit | edit source]Open-Source Implementations
[edit | edit source]FSF GNAT
- Specification: a-except.ads
- Body: a-except.adb
drake
- Specification: a-except.ads
- Body: a-except.adb