try. Перехват и обработка ошибок

^try{код, ошибки которого попадают…}{…в этот обработчик в виде $exception}
^try{код, ошибки которого попадают…}{…в этот обработчик в виде $exception}{а тут код, который в любом случае выполнится в конце}   
[3.3.0]


Если по ходу работы
кода возникла ошибка, создается переменная $exception, и управление передается обработчику.

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


$exception, это такой hash:

$exception.type
строка, тип ошибки.
Определен ряд системных типов, также тип ошибки может быть задан в операторе throw.
$exception.source
строка, источник ошибки (ошибочное имя файла, метода, …)
$exception.file
$exception.lineno
$exception.colno
файл, содержащий source,
номера строки и колонки в нем
$exception.comment
комментарий к ошибке, по-английски
$exception.handled
истина или ложь, флаг «обработана ли ошибка»
необходимо зажечь этот флаг в обработчике, если вы обработали переданную вам ошибку


Обработчик обязан сообщить Parser, что данную ошибку он обработал, для чего только для нужных типов ошибок он должен зажечь флаг:
$exception.handled(true)

Если обработчик не зажег этого флага, ошибка считается необработанной, и передается следующему обработчику, если он есть.

Если ошибка так и не будет обработана, если есть, вызывается метод
unhandled_exception и ему передается информация об ошибке, стек вызовов, приведших к ошибке, и выдаются результаты его работы. А также производится запись в журнал ошибок веб-сервера.

Пример
^try{
   $srcDoc[^
xdoc::create{$untrustedXML}]
}{
   ^if($exception.type 
eq xml){
      $exception.handled(
true)
      Ошибочный XML,
      
<pre>$exception.comment</pre>
   }
}



In order to add comments you must register.
Copyright © 1997–2021 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 04.09.2008