pl2 operator error - palexisru/pl2_rus GitHub Wiki

Операторы обработки ошибок

Последовательность операторов, содержащих обработку ошибок, заключается в единую транзакцию

transaction{
  finalize
  {
  }
проверка на ошибку конкретного пользовательского класса
  catch (System.Error error_object)
  {
  }
получение системной ошибки
  catch (int32 error_value)
  {
  }
  {
    throw new error_object(); // выполнить catch указанного класса и finalize
    revoke // отменить все изменения состояния программы, очистить очередь исходящих сигналов и выполнить код finalize
  }
}

Объект ошибки является наследником системного класс ошибки

в переменную error_value типа int32 помещается код ошибки
коды 0-32767 содержат информацию о системной ошибке

коды более 65536 позволяют извлечь или сбросить объект ошибки в системном буфере ошибок задачи
если класс объекта ошибки наследуется от класса, описанного в каком-либо разделе catch, то происходит переход на обработчик ошибок, размещенных в соответствующем разделе