Klass ErrorException

Klassen ErrorException ärver från basklassen Exception och används för att omvandla PHP-fel till undantag. Den lägger till information om felallvaret (severity) till standardundantagets funktionalitet. Klassen är särskilt användbar tillsammans med funktionen set_error_handler.

Syntax

phpnew ErrorException(
  string $message = "",
  int $code = 0,
  int $severity = E_ERROR,
  string $filename = __FILE__,
  int $lineno = __LINE__,
  Throwable $previous = null
);

Exempel

Låt oss skapa och hantera en ErrorException:

php<?php
  try {
    throw new ErrorException('Kritiskt fel', 0, E_ERROR);
  } catch (ErrorException $e) {
    echo 'Fel: ' . $e->getMessage();
    echo ' Allvar: ' . $e->getSeverity();
  }
?>

Resultat av kodkörning:

php'Fel: Kritiskt fel Allvar: 1'

Exempel

Låt oss omvandla standard PHP-fel till undantag:

php<?php
  function errorHandler($severity, $message, $file, $line) {
    throw new ErrorException($message, 0, $severity, $file, $line);
  }
  
  set_error_handler('errorHandler');
  
  try {
    strpos(); // Felaktigt antal argument
  } catch (ErrorException $e) {
    echo 'Fångat undantag: ' . $e->getMessage();
    echo ' i ' . $e->getFile();
    echo ' på rad ' . $e->getLine();
  }
?>

Resultat av kodkörning (exempel):

php'Fångat undantag: strpos() förväntar sig minst 2 parametrar, 0 angivna i /sökväg/till/fil.php på rad 10'

Exempel

Låt oss hämta information om felallvaret:

php<?php
  try {
    throw new ErrorException('Varningsmeddelande', 0, E_WARNING);
  } catch (ErrorException $e) {
    echo 'Allvarsnivå: ' . $e->getSeverity();
    echo ' Är varning: ' . ($e->getSeverity() === E_WARNING ? 'ja' : 'nej');
  }
?>

Resultat av kodkörning:

php'Allvarsnivå: 2 Är varning: ja'

Se även