Язык скриптования сайтов Parser 3

Optry


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


^try{код, ошибки которого попадают…}{…в этот обработчик в виде $exception}


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

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




$exception.type

строка, тип ошибки.

Определен ряд системных типов, также тип ошибки может быть задан в операторе throw.

$exception.source

строка, источник ошибки (ошибочное имя файла, метода, …)

$exception.file

$exception.lineno

$exception.colno

файл, содержащий source,

номера строки и колонки в нем

$exception.comment

комментарий к ошибке, по английски

$exception.handled

истина или ложь, флаг «обработана ли ошибка»

необходимо зажечь этот флаг в обработчике, если вы обработали переданную вам ошибку

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

$exception.handled(1)


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

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


Пример

^try{

   $srcDoc[^xdoc::create{$untrustedXML}]

}{

   ^if($exception.type eq xml){

      $exception.handled(1)

      Ошибочный XML,

      <pre>$exception.comment</pre>

   }

}



Содержание раздела