Funkcja set_exception_handler

Funkcja set_exception_handler pozwala zdefiniować funkcję, która będzie wywoływana w celu obsługi nieprzechwyconych wyjątków. Jako parametr przekazywana jest nazwa funkcji obsługującej lub funkcja anonimowa. Procedura obsługi otrzymuje obiekt wyjątku jako parametr.

Składnia

phpset_exception_handler(callable $exception_handler): callable

Przykład

Ustawmy prostą obsługę wyjątków:

php<?php
  function myExceptionHandler($exception) {
    echo 'Przechwycony wyjątek: ' . $exception->getMessage();
  }
  
  set_exception_handler('myExceptionHandler');
  
  throw new Exception('Coś poszło nie tak!');
?>

Wynik wykonania kodu:

php'Przechwycony wyjątek: Coś poszło nie tak!'

Przykład

Użycie funkcji anonimowej jako procedury obsługi:

php<?php
  set_exception_handler(function($exception) {
    echo 'Błąd: ' . $exception->getMessage();
  });
  
  throw new Exception('Błąd krytyczny');
?>

Wynik wykonania kodu:

php'Błąd: Błąd krytyczny'

Przykład

Przywracanie poprzedniej procedury obsługi:

php<?php
  function firstHandler($exception) {
    echo 'Pierwsza obsługa: ' . $exception->getMessage();
  }
  
  function secondHandler($exception) {
    echo 'Druga obsługa: ' . $exception->getMessage();
  }
  
  set_exception_handler('firstHandler');
  $old_handler = set_exception_handler('secondHandler');
  restore_exception_handler(); // Przywraca firstHandler
  
  throw new Exception('Test');
?>

Wynik wykonania kodu:

php'Pierwsza obsługa: Test'