Класси ErrorException
Класси ErrorException аз классаи асосии Exception мерос гирифтааст ва барои
табдил додани хатоҳои PHP ба истисноҳо истифода мешавад. Он ба функсионали стандартии
истисноҳо маълумот дар бораи вазнинии хато (severity) илова мекунад. Класс хусусан дар
ҳолати истифода бо функсияи set_error_handler судманд аст.
Синтаксис
new ErrorException(
string $message = "",
int $code = 0,
int $severity = E_ERROR,
string $filename = __FILE__,
int $lineno = __LINE__,
Throwable $previous = null
);
Мисол
ErrorException эҷод карда муомила мекунем:
<?php
try {
throw new ErrorException('Хатои ҷиддӣ', 0, E_ERROR);
} catch (ErrorException $e) {
echo 'Хато: ' . $e->getMessage();
echo ' Вазнинӣ: ' . $e->getSeverity();
}
?>
Натиҷаи иҷрои код:
'Хато: Хатои ҷиддӣ Вазнинӣ: 1'
Мисол
Хатоҳои стандартии PHP-ро ба истисноҳо табдил диҳем:
<?php
function errorHandler($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler('errorHandler');
try {
strpos(); // Миқдори нодурусти аргументҳо
} catch (ErrorException $e) {
echo 'Истисно гирифта шуд: ' . $e->getMessage();
echo ' дар ' . $e->getFile();
echo ' дар сатри ' . $e->getLine();
}
?>
Натиҷаи иҷрои код (мисол):
'Истисно гирифта шуд: strpos() expects at least 2 parameters, 0 given in /path/to/file.php on line 10'
Мисол
Маълумот дар бораи вазнинии хато гирем:
<?php
try {
throw new ErrorException('Паёми огоҳӣ', 0, E_WARNING);
} catch (ErrorException $e) {
echo 'Сатҳи вазнинӣ: ' . $e->getSeverity();
echo ' Огоҳӣ аст: ' . ($e->getSeverity() === E_WARNING ? 'ҳа' : 'не');
}
?>
Натиҷаи иҷрои код:
'Сатҳи вазнинӣ: 2 Огоҳӣ аст: ҳа'
Ҳамчунин нигаред
-
класси
Exception,
класси асосӣ барои ҳамаи истисноҳо дар PHP -
функсияи
set_error_handler,
ки мудири хатои корбарӣ таъин мекунад