ErrorException Sınıfı
ErrorException sınıfı, temel Exception sınıfından miras alır ve
PHP hatalarını istisnalara dönüştürmek için kullanılır. Standart istisna işlevselliğine
hatanın önem derecesi (severity) bilgisini ekler. Bu sınıf özellikle
set_error_handler işleviyle kullanıldığında oldukça faydalıdır.
Sözdizimi
new ErrorException(
string $message = "",
int $code = 0,
int $severity = E_ERROR,
string $filename = __FILE__,
int $lineno = __LINE__,
Throwable $previous = null
);
Örnek
Bir ErrorException oluşturalım ve işleyelim:
<?php
try {
throw new ErrorException('Kritik hata', 0, E_ERROR);
} catch (ErrorException $e) {
echo 'Hata: ' . $e->getMessage();
echo ' Önem Derecesi: ' . $e->getSeverity();
}
?>
Kodun çalıştırılma sonucu:
'Hata: Kritik hata Önem Derecesi: 1'
Örnek
Standart PHP hatalarını istisnalara dönüştürelim:
<?php
function errorHandler($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler('errorHandler');
try {
strpos(); // Yanlış argüman sayısı
} catch (ErrorException $e) {
echo 'Yakalanan istisna: ' . $e->getMessage();
echo ' dosyasında: ' . $e->getFile();
echo ' satırında: ' . $e->getLine();
}
?>
Kodun çalıştırılma sonucu (örnek):
'Yakalanan istisna: strpos() en az 2 parametre bekliyor, 0 verildi /dosya/yolu/file.php dosyasında 10. satırda'
Örnek
Hatanın önem derecesi hakkında bilgi alalım:
<?php
try {
throw new ErrorException('Uyarı mesajı', 0, E_WARNING);
} catch (ErrorException $e) {
echo 'Önem derecesi: ' . $e->getSeverity();
echo ' Uyarı mı: ' . ($e->getSeverity() === E_WARNING ? 'evet' : 'hayır');
}
?>
Kodun çalıştırılma sonucu:
'Önem derecesi: 2 Uyarı mı: evet'
Ayrıca Bakınız
-
sınıf
Exception,
PHP'deki tüm istisnalar için temel sınıf -
işlev
set_error_handler,
özel hata işleyici tanımlayan işlev