Funkcija set_exception_handler

Funkcija set_exception_handler leidžia apibrėžti funkciją, kuri bus iškviečiama nepagautoms išimtims apdoroti. Parametru perduodamas apdorojimo funkcijos pavadinimas arba anoniminė funkcija. Apdorotojas gauna išimties objektą kaip parametrą.

Sintaksė

phpset_exception_handler(callable $exception_handler): callable

Pavyzdys

Nustatykime paprastą išimčių apdorotoją:

php<?php
  function myExceptionHandler($exception) {
    echo 'Pagauta išimtis: ' . $exception->getMessage();
  }
  
  set_exception_handler('myExceptionHandler');
  
  throw new Exception('Kažkas nutiko ne taip!');
?>

Kodo vykdymo rezultatas:

php'Pagauta išimtis: Kažkas nutiko ne taip!'

Pavyzdys

Anoniminės funkcijos naudojimas kaip apdorotojo:

php<?php
  set_exception_handler(function($exception) {
    echo 'Klaida: ' . $exception->getMessage();
  });
  
  throw new Exception('Kritinė klaida');
?>

Kodo vykdymo rezultatas:

php'Klaida: Kritinė klaida'

Pavyzdys

Ankstesnio apdorotojo atkūrimas:

php<?php
  function firstHandler($exception) {
    echo 'Pirmasis apdorotojas: ' . $exception->getMessage();
  }
  
  function secondHandler($exception) {
    echo 'Antrasis apdorotojas: ' . $exception->getMessage();
  }
  
  set_exception_handler('firstHandler');
  $old_handler = set_exception_handler('secondHandler');
  restore_exception_handler(); // Atkuria firstHandler
  
  throw new Exception('Testas');
?>

Kodo vykdymo rezultatas:

php'Pirmasis apdorotojas: Testas'