Classe ErrorException
La classe ErrorException hérite de la classe de base Exception et est utilisée
pour convertir les erreurs PHP en exceptions. Elle ajoute au fonctionnalité standard
des exceptions des informations sur la sévérité de l'erreur (severity). La classe est particulièrement utile
lorsqu'elle est utilisée avec la fonction set_error_handler.
Syntaxe
new ErrorException(
string $message = "",
int $code = 0,
int $severity = E_ERROR,
string $filename = __FILE__,
int $lineno = __LINE__,
Throwable $previous = null
);
Exemple
Créons et traitons une ErrorException :
<?php
try {
throw new ErrorException('Critical error', 0, E_ERROR);
} catch (ErrorException $e) {
echo 'Error: ' . $e->getMessage();
echo ' Severity: ' . $e->getSeverity();
}
?>
Résultat de l'exécution du code :
'Error: Critical error Severity: 1'
Exemple
Convertissons les erreurs standard de PHP en exceptions :
<?php
function errorHandler($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler('errorHandler');
try {
strpos(); // Nombre incorrect d'arguments
} catch (ErrorException $e) {
echo 'Caught exception: ' . $e->getMessage();
echo ' in ' . $e->getFile();
echo ' on line ' . $e->getLine();
}
?>
Résultat de l'exécution du code (exemple) :
'Caught exception: strpos() expects at least 2 parameters, 0 given in /path/to/file.php on line 10'
Exemple
Obtenons des informations sur la sévérité de l'erreur :
<?php
try {
throw new ErrorException('Warning message', 0, E_WARNING);
} catch (ErrorException $e) {
echo 'Severity level: ' . $e->getSeverity();
echo ' Is warning: ' . ($e->getSeverity() === E_WARNING ? 'yes' : 'no');
}
?>
Résultat de l'exécution du code :
'Severity level: 2 Is warning: yes'
Voir aussi
-
classe
Exception,
classe de base pour toutes les exceptions en PHP -
fonction
set_error_handler,
qui définit un gestionnaire d'erreurs personnalisé