Оператор Try предоставляет механизм для перехвата исключительных ситуаций, возникающих при выполнении блока вложенных операторов. Также оператор Try предоставляет возможность указания блока операторов, которые будут выполнены при передаче управления за пределы оператора Try.
try-statement:
Try block catch-clauses End Try
Try block finally-clause End Try
Try block catch-clauses finally-clause End Try
catch-clauses:
Except specific-catch-clauses else-catch-clauseopt
Except block
specific-catch-clauses:
specific-catch-clause
specific-catch-clauses specific-catch-clause
specific-catch-clause:
On exception-variable-declarationopt class-type Do
Beginopt block Endopt;
exception-variable-declaration:
identifier :
else-catch-clause:
Else
Beginopt block Endopt;
finally-clause:
Finally block
Имеются три возможных формы оператора Try:
Блок операторов Try с одним или более последующими блоками операторов Except.
Блок операторов Try со следующим за ним блоком операторов Finally.
Блок операторов Try с одним или более последующими блоками операторов Except, завершающийся блоком операторов Finally.
В случае если для блока Except указан тип обработчика, то данный тип должен быть производным от System.Exception.
Если в блоке Except указан как тип обработчика, так и идентификатор, то объявляется переменная исключения с указанным именем и типом. Переменная исключения подобна локальной переменной, областью действия которой является блок операторов в блоке Except. Во время выполнения обработчика данная переменная представляет текущую обрабатываемую исключительную ситуацию.
Обработчик Except без указанного типа обработчика называется обработчиком общего назначения. Оператор Try может содержать только один обработчик общего назначения и он должен быть последним в цепочке обработчиков исключений.
Imports System;
Public Class TestException
Public Sub Test(a, b: integer);
Begin
//Код процедуры
//Проверка соотнощения параметров A и B
If <Условие проверки> Then
Raise New ArgumentException("Недопустимое соотношение параметров A и B");
//Проверка допустимого диапазона значений параметров
Elseif <Условие проверки> Then
Raise New ArgumentOutOfRangeException("Значения параметров выходят за пределы допустимого диапазона");
Else
//Основной код процедуры выполняемый, если
//все проверки параметров пройдены
End If;
End Sub Test;
End Class TestException;
Public Class Program
Public Sub Main();
Var
Obj: TestException = New TestException();
Begin
Try
//Выполнение процедуры Test с какими-либо значениями параметров;
Obj.Test(<Значения параметров>);
Except On Ex: ArgumentException Do
Begin
//Обработка исключительной ситуации
//при недопустимом соотношении параметров A и B
End;
On Ex: ArgumentOutOfRangeException Do
Begin
//Обработка исключительной ситуации
//при выходе значений параметров A и B за пределы допустимого диапазона
End;
Else
Begin
//Обработка всех остальных исключительных ситуаций
End;
Finally
//Блок, выполняемый всегда
End Try;
End Sub Main;
End Class Program;
См.также: