PHP - set_exception_handler
Třída
Metoda - set_exception_handler
(PHP 5, PHP 7)
Funkce slouží k definování uživatelského exception handleru, jinými slovy funkce umožňuje odchytávání výjimek na té nejvyšší úrovni, kde by jinak způsobily pád skriptu. Slouží k zachycení všech výjimek, které nejsou zachyceny pomocí try-catch bloku. Běh skriptu bude zastaven po zavolání definované funkce!
Poznámka: Exception handler slouží pouze pro
zachytávání výjimek, nikoliv chyb. Pro zachytávání chyb použijte funkci
set_error_handler()
!
Procedurální
- function set_exception_handler (callable $exception_handler) : callable
- function handler () : bool
Parametry
Název | Datový typ | Výchozí hodnota | Popis |
---|---|---|---|
$exception_handler | callable | Název funkce sloužící pro zachytávání výjimek. |
Návratové hodnoty
Vrací: callable
Vrací název předchozího exception handleru, nebo null
v
případě chyby nebo pokud se jedná o první exception handler.
Příklady
Bez try-catch:
<?php
function mujHandler($vyjimka)
{
echo '-----------' . "\n";
echo 'Máme tu výjimku!' . "\n";
echo 'Zpráva zní: ' . $vyjimka->getMessage() . "\n";
echo 'V souboru ' . $vyjimka->getFile() . ':' . $vyjimka->getLine() . "\n";
echo '-----------' . "\n";
}
set_exception_handler('mujHandler');
echo 'Ahoj světe!' . "\n";
throw new Exception('Testovací výjimka');
echo 'Sbohem světe!';
To stejné s try-catch:
<?php
function mujHandler($vyjimka)
{
echo '-----------' . "\n";
echo 'Máme tu výjimku!' . "\n";
echo 'Zpráva zní: ' . $vyjimka->getMessage() . "\n";
echo 'V souboru ' . $vyjimka->getFile() . ':' . $vyjimka->getLine() . "\n";
echo '-----------' . "\n";
}
set_exception_handler('mujHandler');
echo 'Ahoj světe!' . "\n";
try {
throw new Exception('Testovací výjimka');
}
catch (Exception $ex)
{
echo 'Výjimka! Ale jsme v try-catch, skript pojede dál.' . "\n";
}
echo 'Sbohem světe!';