Η Κλάση ErrorException
Η κλάση ErrorException κληρονομεί από τη βασική κλάση Exception και χρησιμοποιείται
για τη μετατροπή σφαλμάτων της PHP σε εξαιρέσεις. Προσθέτει στην τυπική λειτουργικότητα
των εξαιρέσεων πληροφορίες σχετικά με τη σοβαρότητα του σφάλματος (severity). Η κλάση είναι ιδιαίτερα χρήσιμη
όταν χρησιμοποιείται με τη συνάρτηση set_error_handler.
Σύνταξη
new ErrorException(
string $message = "",
int $code = 0,
int $severity = E_ERROR,
string $filename = __FILE__,
int $lineno = __LINE__,
Throwable $previous = null
);
Παράδειγμα
Δημιουργία και επεξεργασία μιας ErrorException:
<?php
try {
throw new ErrorException('Κρίσιμο σφάλμα', 0, E_ERROR);
} catch (ErrorException $e) {
echo 'Σφάλμα: ' . $e->getMessage();
echo ' Σοβαρότητα: ' . $e->getSeverity();
}
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
'Σφάλμα: Κρίσιμο σφάλμα Σοβαρότητα: 1'
Παράδειγμα
Μετατροπή τυπικών σφαλμάτων της PHP σε εξαιρέσεις:
<?php
function errorHandler($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler('errorHandler');
try {
strpos(); // Λανθασμένος αριθμός ορισμάτων
} catch (ErrorException $e) {
echo 'Πιάστηκε εξαίρεση: ' . $e->getMessage();
echo ' στο ' . $e->getFile();
echo ' στη γραμμή ' . $e->getLine();
}
?>
Αποτέλεσμα εκτέλεσης του κώδικα (παράδειγμα):
'Πιάστηκε εξαίρεση: strpos() expects at least 2 parameters, 0 given in /path/to/file.php on line 10'
Παράδειγμα
Λήψη πληροφοριών σχετικά με τη σοβαρότητα του σφάλματος:
<?php
try {
throw new ErrorException('Προειδοποιητικό μήνυμα', 0, E_WARNING);
} catch (ErrorException $e) {
echo 'Επίπεδο σοβαρότητας: ' . $e->getSeverity();
echo ' Είναι προειδοποίηση: ' . ($e->getSeverity() === E_WARNING ? 'ναι' : 'όχι');
}
?>
Αποτέλεσμα εκτέλεσης του κώδικα:
'Επίπεδο σοβαρότητας: 2 Είναι προειδοποίηση: ναι'
Δείτε επίσης
-
την κλάση
Exception,
τη βασική κλάση για όλες τις εξαιρέσεις στην PHP -
τη συνάρτηση
set_error_handler,
που ορίζει έναν χειριστή σφαλμάτων χρήστη