Klasse ErrorException

De klasse ErrorException erft over van de basisklasse Exception en wordt gebruikt om PHP-fouten om te zetten in uitzonderingen. Het voegt informatie over de ernst (severity) van de fout toe aan de standaardfunctionaliteit van uitzonderingen. De klasse is vooral nuttig bij gebruik met de functie set_error_handler.

Syntaxis

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

Voorbeeld

Laten we een ErrorException maken en verwerken:

php<?php
  try {
    throw new ErrorException('Kritieke fout', 0, E_ERROR);
  } catch (ErrorException $e) {
    echo 'Fout: ' . $e->getMessage();
    echo ' Ernst: ' . $e->getSeverity();
  }
?>

Resultaat van het uitvoeren van de code:

php'Fout: Kritieke fout Ernst: 1'

Voorbeeld

Laten we standaard PHP-fouten omzetten in uitzonderingen:

php<?php
  function errorHandler($severity, $message, $file, $line) {
    throw new ErrorException($message, 0, $severity, $file, $line);
  }
  
  set_error_handler('errorHandler');
  
  try {
    strpos(); // Verkeerd aantal argumenten
  } catch (ErrorException $e) {
    echo 'Uitzondering opgevangen: ' . $e->getMessage();
    echo ' in ' . $e->getFile();
    echo ' op regel ' . $e->getLine();
  }
?>

Resultaat van het uitvoeren van de code (voorbeeld):

php'Uitzondering opgevangen: strpos() verwacht minstens 2 parameters, 0 gegeven in /pad/naar/bestand.php op regel 10'

Voorbeeld

Laten we informatie over de ernst van de fout verkrijgen:

php<?php
  try {
    throw new ErrorException('Waarschuwingsbericht', 0, E_WARNING);
  } catch (ErrorException $e) {
    echo 'Ernstniveau: ' . $e->getSeverity();
    echo ' Is waarschuwing: ' . ($e->getSeverity() === E_WARNING ? 'ja' : 'nee');
  }
?>

Resultaat van het uitvoeren van de code:

php'Ernstniveau: 2 Is waarschuwing: ja'

Zie ook