PHP Исключения

PHP Исключения

PHP 5 Осчастливил нас механизмом исключений: Exceptions. Эта статья собственно о том, что они такое, что они могут дать разработчику, и как с ними работать.

Создание класса — это всегда работа на абстрактном уровне: создается не конкретная область памяти, а только поведение объектов. Класс выступает инструментом, который, как и язык программирования, может применяться в совершенно разных областях и приложениях.

Обработка нештатных ситуаций, ошибок как в коде, так и ошибок ввода данных может быть различной для разных приложений: где-то достаточно вывести сообщение при помощи функции echo, а где-то сообщение следует оформить в виде НТМL — страницы с дизайном, согласованным с остальными страницами приложения; где-то сообщение об ошибке должно быть помещено в журнал ( В файл или в базу данных).

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

Разработчик класса должен сгенерировать исключение, а пользователь класса может его обработать по своему усмотрению. Разработчики могут проектировать свои собственные исключения, которые являются классами, при этом генерация исключений сводится к передаче объекта исключения из точки возникновения нештатной ситуации в обработчик исключений.

Удобство применения исключительных ситуаций применительно к объектно — ориентированному подходу вовсе не означает, что следует пренебрегать процедурными средствами обработки ошибок. В РНР имеется развитая система отслеживания и контроля за ошибками, и пренебрегать ею не стоит. Для реализации механизма исключений в РНР введены следующие ключевые слова: try(контролировать), throw (генерировать) и catch (обрабатывать).

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

 

try

{

  // Операторы

  

  // Генерация исключений

  throw new Exception('Какое то сообщение – необязательно');

  

  // Операторы

}

catch (Exception $ехр)

{

  // Блок обработки исключительной ситуации

}

Обработчик (или обработчики) всегда располагаются после контролируемого оператором try блока кода. Среди операторов контролируемого блока могут быть любые операторы и объявления РНР. Если в блоке try генерируется исключение при помощи ключевого слова throw, то интерпретатор РНР переходит в catch — обработчик. На изображении представлен скрипт, в котором генерируется исключение, там мы делаем проверку деления на 0.

Имейте в виду: Если исключение не порождается, то блок catch не будет выполнен никогда.

В качестве исключения выступает объект класса Exception, который создается при помощи ключевого new непосредственно при вызове оператора throw. Однако объект можно подготовить заранее:

 

$excp = new Exception();

throw $excp;

При генерации исключения ключевое слово throw принимает объект класса Exception или производного класса.

 

 

Возможно Вас заинтересуют эти материалы

PHP: Буферизация вывода

Буферизация вывода в PHP это довольно полезная штука, если уметь ею пользоваться. Скажите сколько раз

POP3 протокол с примерами

POP3 это протокол по которому мы можем получить почту с сервера, для подобной задачи, используется

PHP: Хранение сессии в базе данных

Как и обещал, тема данной заметки: база данных, как обработчик сессии. А так как на