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

phpnew 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<?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 :

php'Error: Critical error Severity: 1'

Exemple

Convertissons les erreurs standard de PHP en exceptions :

php<?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) :

php'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<?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 :

php'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é