Введение в программирование - Учебное пособие (Корочкин А. В.)

10.5 пакет ada.exceptions

В языке имеется ряд предопределенных     библиотечных   пакетов, связанных с исключениями. Это , например, пакет  IO_EXCEPTIONS связанный в исключениями при вводе-выводе.

Рассмотрим предопределенный пакет ADA.EXCEPTIONS . Он пре­доставляет пользователю дополнительные ресурсы в виде типов, кон­стант и процедур для работы с исключениями.

Спецификация пакета   ADA.EXCEPTIONS    :

package   ADA.EXCEPTIONS  is

type Exceptionjd is private; Nulljd : constant Exceptionjd ; function Exception_Name (Id : Exceptionjd) return String ;

type  Exception_Occrrence               is   limited   private; type   Exception_Occurrence_Access    is   access

all   ExceptionjDccurrence; NullJDccurrence : constant   Exception_Occurrence;

procedure    RaiseJException ( E :   in   Exceptionjd ;

Message : in   String   ); function       ExceptionJVIessage (X : ExceptionjDccurrence )

return String; procedure    Reraise _Occurrence( X : in ExceptionJDccurrence );

Ада 95. Введение в программирование

113

Глава 10. Исключения

 

function     Exceptionjdentity ( X : Exception_Occurence)

return    Exception; function      Exception_Name     ( X : ExceptionjDccurence )

return    String; function     Exception_lnformation( X : ExceptionjDccurence )

return String ; procedure Save_Occurence( Target: out Exception_Occuremce ;

Source: in    ExceptionjDccurence); function    SavejDccurence ( Source :     ExceptionjDccurence )

return   ExceptionjDccurence_Access; private

...             - -    не определены в языке

end   ADA . EXCEPTIONS ;

Пользователь может использовать ресурсы этого пакета при описа­нии новых видов исключений и их обработчиков.

Ш  СОВЕТЫ:

*  Экспортируйте (делайте видимыми для пользователя) имена всех исключений, которые могут быть возбуждены.

*   В пакете описывайте каждое исключение, которое может быть воз­буждено каждой подпрограммой или входом задачи,описанных в пакете.

*   Если возможно, избегайте изменения состояния информации в мо­дуле перед возбуждением исключения.

*  Не возбуждайте предопределенные исключения или предопределен­ные реализацией исключения.

*  Используйте исключения при определении абстракций.

*  Не используйте оператор     goto    в исключениях и обработчиках.

*  Используйте в обработчиках информацию, полученную с помощью процедур пакета Ada . Exceptions.

4  Обрабатывайте все исключения (пользовательские и предопреде­ленные )

*   Используйте оператор блока для локализации объединения частей программы с обработчиками.

ИЗМЕНЕНИЯ:

О Исключение NumericJError переименовано в ConstraintJError. О Обработчик исключения можно размещать  непосредственно в опе­раторе Accept. О Добавлен пакет Ada . Exception для работы с исключениями.