PHP Исключения - PHP Исключения. стр. 2 Класс Exception

PHP Исключения - PHP Исключения. стр. 2 Класс Exception

Индекс материала
PHP Исключения
Класс Exception
Все страницы

Класс Exception

Для эффективного использования класса Exception следует познакомиться с его интерфейсом. Ниже представлены свойства класса Exception, объявленные со спецификатором доступа protected, доступ к которым можно получить при помощи методов класса, а также из производных классов.

Класс Exception относится к так называемым предопределенным классам, то есть классам, которые реализованы в РНР - интерпретаторе и не требуют реализации со стороны программиста.

Защищенные свойства класса Exception:

  • $this->message - Текстовое сообщение, описывающее исключительную ситуацию.
  • $this->code - Числовой код , назначенный данному типу исключительных ситуаций.
  • $this->file - Имя файла, в котором произошла исключительная ситуация.

Методы класса Exception

Так как свойства класса Exception, объявлены со спецификатором protected, доступ к ним осуществляется при помощи методов класса, описание которых представлено ниже:

public function __construct( $message = NULL, $code = 0 )
Конструктор класса, инициализирующий свойства $message и $code – оба не обязательны.
final function getMessage()
Метод возвращает текстовое сообщение, содержащееся в свойстве $this->message
final function getCode()
Метод, возвращающий числовой код исключения, хранящегося в свойстве $this->code
final function getFile()
Метод возвращает имя файла $this->file в котором произошло исключение.
final function getLine()
Метод возвращает номер строки $this->line в которой произошло исключение.
final function getTrace()
Метод возвращает стек обработки исключительной ситуации в виде массива.
final function getTraceAsString()
Метод возвращает стек обработки исключительной ситуации в виде строки.
function __toString()
Перегрузка магического метода __toString() возвращающего строку, когда происходит попытка использовать объект в строковом контексте.

Ниже представлен код который выдаст подробную информацию о произошедшем исключении:


  try
  {
    $b = rand(0,1);

    if($b == 0)
    {
      // Здесь порождаем исключение
      throw new Exception( /* сообщение */ 'Первая точка входа', 
                           /* кусок кода */ $b );
    }
    else
    {
      // Здесь порождаем исключение
      throw new Exception( /* сообщение */ 'Вторая точка входа', 
                           /* кусок кода */ $b );
    }
  }
  catch(Exception $e) // Здесь ловим исключение
  {
    echo 'Исключние: '. $e->getCode().' : '.$e->getMessage().'<br />';
    echo 'В файле :'.$e->getFile().'<br />';
    echo 'В строке : '.$e->getLine();
  }

В зависимости от того какое значение примет $b скипт выведет информацию для первого оператора throw :

Исключение 0 : Первая точка входа
в файле D: \main\oop\08\index.php
в строке 8

либо для второго :

Исключение 1 : Вторая точка входа
в файле D: \main\oop\08\index.php
в строке 14

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

Кстати:
Если исключение не ловиться ни одним блоком catch, то в итоге PHP выдаст фатальную ошибку и остановит скрипт, что бы этого избежать нужно, назначить Исключения как обработчик ошибок:


  function exception_handler($exception)
  {
    echo "Uncaught exception: " , $exception->getMessage(), "\n";
  }

  set_exception_handler('exception_handler');

  throw new Exception('Uncaught Exception');

  echo "Not Executed\n";



Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 115 гостей онлайн