Klase ErrorException

Klase ErrorException mantota no bāzes klases Exception un tiek izmantota PHP kļūdu pārvēršanai par izņēmumiem. Tā pievieno standarta izņēmumu funkcionalitātei informāciju par kļūdas nopietnību (severity). Klase ir īpaši noderīga līdz ar funkcijas set_error_handler lietošanu.

Sintakse

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

Piemērs

Izveidosim un apstrādāsim ErrorException:

php<?php
  try {
    throw new ErrorException('Kritiska kļūda', 0, E_ERROR);
  } catch (ErrorException $e) {
    echo 'Kļūda: ' . $e->getMessage();
    echo ' Nopietnība: ' . $e->getSeverity();
  }
?>

Koda izpildes rezultāts:

php'Kļūda: Kritiska kļūda Nopietnība: 1'

Piemērs

Pārveidosim standarta PHP kļūdas par izņēmumiem:

php<?php
  function errorHandler($severity, $message, $file, $line) {
    throw new ErrorException($message, 0, $severity, $file, $line);
  }
  
  set_error_handler('errorHandler');
  
  try {
    strpos(); // Nepareizs argumentu daudzums
  } catch (ErrorException $e) {
    echo 'Noķerts izņēmums: ' . $e->getMessage();
    echo ' failā ' . $e->getFile();
    echo ' rindā ' . $e->getLine();
  }
?>

Koda izpildes rezultāts (piemērs):

php'Noķerts izņēmums: strpos() sagaida vismaz 2 parametrus, 0 doti failā /path/to/file.php rindā 10'

Piemērs

Iegūsim informāciju par kļūdas nopietnību:

php<?php
  try {
    throw new ErrorException('Brīdinājuma ziņojums', 0, E_WARNING);
  } catch (ErrorException $e) {
    echo 'Nopietnības līmenis: ' . $e->getSeverity();
    echo ' Vai ir brīdinājums: ' . ($e->getSeverity() === E_WARNING ? 'jā' : 'nē');
  }
?>

Koda izpildes rezultāts:

php'Nopietnības līmenis: 2 Vai ir brīdinājums: jā'

Skatiet arī

  • klasi Exception,
    bāzes klase visiem izņēmumiem PHP
  • funkciju set_error_handler,
    kas uzstāda lietotāja definētu kļūdu apstrādātāju