Выбрать страницу

Исключение – специальный объект, являющийся экземпляром класса Exception или его производного класса.

Конструктору класса Exception передается два необязательных параметра: строка сообщения и код ошибки. Для генерации исключения используется ключевое слово throw.

if ( <условие> ) {
  throw new Exception(<сообщение>, <код ошибки>);
}

Обработка исключений производиться с помощью операторов try{}catch(){}. Блоком в котором может произойти исключение обрамляется фигурными скобками, перед ним ставиться оператор try, а после один или несколько блоков catch(){}.

try {
  //код который может вызвать исключение
} catch ( ChildrenException $e ) {
  //обработка исключения типа ChildrenException
} catch ( Exception $e ) {
  //обработка исключения типа Exception
  //например просто вывод ошибки: echo $e->getMessage(); 
}

Какой именно блок catch будет выполнять обработку исключения будет зависеть от типа сгенерированного исключения и указанного уточнения типа класса в списке аргументов. В общем случае будет выполнен самый первый подходящий оператор catch. Поэтому самый общий тип нужно размещать в конце, а самый специализированный – в начале списка операторов catch.

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

try {
  //код который может вызвать исключение
} catch ( ChildrenException $e ) {
  //передаем исключение дальше
  throw $e;
} catch ( Exception $e ) {
  //обработка исключения типа Exception
}

Если в списке операторов catch не найдется подходящего исключения, то оно автоматически сгенерируется повторно и его сможет обработать вызывающий код. Этот процесс будет продолжаться до тех пор, пока исключение не будет обработано, либо его уже нельзя будет снова сгенерировать. Тогда произойдет неустранимая ошибка (PHP Fatal error).

Было опубликовано 10 ноября 2012 на php-example.ru

Share This