Функция set_exception_handler

Функцията set_exception_handler позволява дефинирането на функция, която ще бъде извиквана за обработка на нехванати изключения. Като параметър се предава името на функцията-обработчик или анонимна функция. Обработчикът получава обект на изключението като параметър.

Синтаксис

phpset_exception_handler(callable $exception_handler): callable

Пример

Нека зададем прост обработчик на изключения:

php<?php
  function myExceptionHandler($exception) {
    echo 'Хванато изключение: ' . $exception->getMessage();
  }
  
  set_exception_handler('myExceptionHandler');
  
  throw new Exception('Нещо се обърка!');
?>

Резултат от изпълнението на кода:

php'Хванато изключение: Нещо се обърка!'

Пример

Използване на анонимна функция като обработчик:

php<?php
  set_exception_handler(function($exception) {
    echo 'Грешка: ' . $exception->getMessage();
  });
  
  throw new Exception('Критична грешка');
?>

Резултат от изпълнението на кода:

php'Грешка: Критична грешка'

Пример

Възстановяване на предишен обработчик:

php<?php
  function firstHandler($exception) {
    echo 'Първи обработчик: ' . $exception->getMessage();
  }
  
  function secondHandler($exception) {
    echo 'Втори обработчик: ' . $exception->getMessage();
  }
  
  set_exception_handler('firstHandler');
  $old_handler = set_exception_handler('secondHandler');
  restore_exception_handler(); // Възстановява firstHandler
  
  throw new Exception('Тест');
?>

Резултат от изпълнението на кода:

php'Първи обработчик: Тест'