PHP’de Hata İşleyicileri

PHP de bir hata mesajı bize, dosya adı, satır numarası ve hata bilgisini verir. Bu bilgileri düzenlemek veya kişiselleştirmek uygulamamızın profesyonelliğini gösterir ve güvenlik sağlar.

PHP’de bu maksatla üç farklı yöntem kullanılır;

  • die() ifadesi,
  • özel hata yönetimi ve hata mesajları,
  • hata raporları.

die() Fonksiyonu

Yönetmediğimiz bir hata için tarayıcıda görünecek mesaja gözatalım ve bunun için bir örnek oluşturalım;

<?php
$file=fopen(”ornek.txt”,”r”);
?>

Yukarıdaki gibi bir uygulamada “ornek.txt” dosyası bulunamazsa aÅŸağıdaki gibi bir hata mesajı alınacaktır;

Warning: fopen(ornek.txt) [function.fopen]: failed to open stream:
No such file or directory in C:\apps\test.php on line 2

Bu mesajı die() fonksiyonu ile düzenlersek;

<?php
if(!file_exists(”ornek.txt”))
{
die(”Dosya bulunamadı.”);
}
else
{
$file=fopen(”ornek.txt”,”r”);
}
?>

Çıktısı ise aşağıdaki gibidir;

Dosya Bulunamadı.

Özel Hata Yönetimi

Özel hata yönetimi için kullanılabilecek iki temel parametre (hata seviyesi ve hata mesajı) ve bunun yanında kullanılabilecek opsiyonel (dosya, satır, hata bilgisi) parametreleri bulunur. Dizilimi;

error_function(error_level,error_message, error_file,error_line,error_context)

Parametreler Açıklama
error_level Gerekli. Ayırtedilebilir bir hata numarası alır.
error_message Gerekli. Hata tarifi.
error_file Opsiyonel. Hata dosya adı
error_line Opsiyonel. Hata satır numarası.
error_context Opsiyonel. Sıralı tüm değişkenleri ve değerlerini kapsar. Hata bulunduğunda kullanılır.

Hata raporu seviyeleri;

Değer Sabit Açıklama
2 E_WARNING Tehlikeli değildir, çalışma zamanı hatasıdır. Uygulama çalışmaya devam eder.
8 E_NOTICE Çalışma zamanı uyarısı. Normal çalışmada da bulunabilir.
256 E_USER_ERROR Tehlikeli, kullanıcı hatası.
512 E_USER_WARNING Tehlikesiz kullanıcı hatası.
1024 E_USER_NOTICE Kullanıcı uyarısı.
4096 E_RECOVERABLE_ERROR Tehlikeli avlanabilir hata.
8191 E_ALL Tüm hata ve tehlikeler.

Örnek fonksiyon;

function customError($errno, $errstr)
{
echo “<b>Error:</b> [$errno] $errstr<br />”;
echo “Script sonu”;
die();
}

Hata iÅŸleyicilerini ayarlamak;

Temel hata işleyicilerden bir tanesi aşağıdaki gibidir. Farklı birçok yöntemde kullanılabilir;

set_error_handler(”customError”);

Örnek;

<?php
//hata fonksiyonu
function customError($errno, $errstr)
{
echo “<b>Error:</b> [$errno] $errstr”;
}

//işleyici ayarı
set_error_handler(”customError”);

//trigger error
echo($test);
?>

Örneğin çıktısı;

Custom error: [8] Undefined variable: test

Hata sebebini gösterme;

Herhangi bir girdi bilgisini denetleyip hata sonucunu yönetme;

<?php
$test=2;
if ($test>1)
{
trigger_error(”DeÄŸer 1 veya daha küçük olnalı.”);
}
?>

Yukarıdaki örneğin çıktısı;

Notice: Değer 1 veya daha küçük olnalı.
in C:\apps\test.php on line 6

Örnekler;

<?php
//hata fonksiyonu
function customError($errno, $errstr)
{
echo “<b>Error:</b> [$errno] $errstr<br />”;
echo “Script sonu”;
die();
}

//iÅŸleyici ayarla
set_error_handler(”customError”,E_USER_WARNING);

//trigger error
$test=2;
if ($test>1)
{
trigger_error(”DeÄŸer 1 veya daha küçük olmalı “,E_USER_WARNING);
}
?>

Çıktısı;

Error: [512] Değer 1 veya daha küçük olmalı
Ending Script

BeğenmedimBeğendim (Henüz değerlendirilmedi)

Yorum Yapın

XHTML:: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Puan sıralaması (alttan yukarı) Puan Sıralaması (yukarıdan alta) Ne yapıyorum? - twitter