Ada 编程/库/Ada.Exceptions
外观
此语言功能从 Ada 95 开始可用。
Ada.Exceptions 是自 Ada 95 以来 预定义语言环境 的一个单元。
包 Ada.Exceptions 允许您分析已捕获的异常,以关联消息引发异常或保存异常事件以供以后处理。
以下示例展示了如何实现一个“最后手段”错误处理程序,它只显示与发生的错误相关的信息。
withAda.Exceptions;procedureNumeric_6ispackageExeptrenamesAda.Exceptions; ...exceptionwhenAn_Exception :others=> T_IO.Put_Line (Exept.Exception_Information (An_Exception));endTry;
-- 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 -- -------------------------------------------------------------------------withAda.Streams;packageAda.ExceptionsispragmaPreelaborate (Exceptions);typeException_Idisprivate;pragmaPreelaborable_Initialization (Exception_Id); Null_Id :constantException_Id;functionException_Name (Id :inException_Id)returnString;functionWide_Exception_Name (Id :inException_Id)returnWide_String;functionWide_Wide_Exception_Name (Id :inException_Id)returnWide_Wide_String;typeException_Occurrenceislimitedprivate;pragmaPreelaborable_Initialization (Exception_Occurrence);typeException_Occurrence_AccessisaccessallException_Occurrence; Null_Occurrence :constantException_Occurrence;procedureRaise_Exception (E :inException_Id; Message :inString := "");pragmaNo_Return (Raise_Exception);functionException_Message (X :inException_Occurrence)returnString;procedureReraise_Occurrence (X :inException_Occurrence);functionException_Identity (X :inException_Occurrence)returnException_Id;functionException_Name (X :inException_Occurrence)returnString; -- Same as Exception_Name(Exception_Identity(X)).functionWide_Exception_Name (X :inException_Occurrence)returnWide_String; -- Same as Wide_Exception_Name(Exception_Identity(X)).functionWide_Wide_Exception_Name (X :inException_Occurrence)returnWide_Wide_String; -- Same as Wide_Wide_Exception_Name(Exception_Identity(X)).functionException_Information (X :inException_Occurrence)returnString;procedureSave_Occurrence (Target :outException_Occurrence; Source :inException_Occurrence);functionSave_Occurrence (Source :inException_Occurrence)returnException_Occurrence_Access;procedureRead_Exception_Occurrence (Stream :notnullaccessAda.Streams.Root_Stream_Type'Class; Item :outException_Occurrence);procedureWrite_Exception_Occurrence (Stream :notnullaccessAda.Streams.Root_Stream_Type'Class; Item :inException_Occurrence);forException_Occurrence'ReaduseRead_Exception_Occurrence;forException_Occurrence'WriteuseWrite_Exception_Occurrence;privatepragmaImport (Ada, Exception_Id);pragmaImport (Ada, Exception_Occurrence);pragmaImport (Ada, Null_Id);pragmaImport (Ada, Null_Occurrence);endAda.Exceptions;
外部示例
[编辑源代码]- 搜索
Ada.Exceptions的 示例:Rosetta Code, GitHub (片段), 任何 Alire 包 或 本。 - 搜索与
Ada.Exceptions相关的 帖子:Stack Overflow, comp.lang.ada 或 任何与 Ada 相关的页面。
FSF GNAT
- 规格:a-except.ads
- 主体:a-except.adb
drake
- 规格:a-except.ads
- 主体:a-except.adb
