Friday, October 31, 2014

Penanganan Error pada PHP

Dalam pemrograman PHP sering dijumpai error karena ada kesalahan pada salah satu proses. Kesalahan ini bisa dikarenakan suatu komponen yang dibutuhkan program tidak ada atau karena syarat yang diminta program tidak terpenuhi. Seperti misalnya sebuah programm untuk membuka file namun file yang dimaksud ternyata tidak ada maka otomatis browser akan menampilkan error.

Jika tampil pesan error pada browser, program yang kita buat akan terlihat tidak profesional dan juga memungkinkan celah yang membahayakan bagi keamanan program itu sendiri. Untuk itu perlu dibuat sebuah penanganan error yang menghentikan program dan kemudian menampilkan pesan error sesuai kondisi yang terjadi.

Contoh script PHP yang memungkinkan terjadi error

<?php  
$file=fopen("coba.txt","r");  
?>  

Dan berikut tampilan error pada browser jika file yang diminta tidak ada

Warning: fopen(coba.txt) [function.fopen]: failed to open stream:
No such file or directory in /var/www/php/demo.php on line 2

Menangani Error pada PHP dengan fungsi die()

Dalam PHP ada beberapa cara untuk menangani error, salah satunya yang paling simpel adalah menggunakan fungsi die(). Caranya adalah dengan menyeleksi kondisi lalu jika tidak terpenuhi kita taruh fungsi die(). Jika fungsi die() dieksekusi maka program akan berhenti dan script program dibawahnya tidak akan dijalankan.

Contoh penggunaan fungsi die()

<?php  
if(!file_exists("coba.txt")) {  
 die("File tidak ditemukan");  
} else {  
 $file=fopen("coba.txt","r");  
}  
while(! feof($file))    
 {    
 echo fgets($file). "<br />";    
 }    
fclose($file);    
?>    

Penjelasan script:

Contoh diatas merupakan program untuk membuka file cobe.txt (baris ke-5) dan menampilkan file baris demi baris sampai akhir file (baris ke-7 sampai baris ke-10). Pada baris ke-2 dibuat penyeleksian untk mengecek keberadaan file dengan fungsi file_exist().

Fungsi die ditaruh pada kondisi jika fungsi file_exist() membalikkan nilai FALSE karena file tidak ada. Dengan fungsi die() maka eksekusi script akan dihentikan dan kode program dibawahnya (baris ke-7 sampai akhir) tidak dijalankan. Dengan demikian kita tidak terlalu dipusingkan dengan banyak logika penyeleksian setelahnya.

Menangani error dengan Custom Error Handler dan Trigger Error

Cara kedua untuk menangani error pada PHP adalah dengan membuat fungsi Custom Error lalu membuat Handler untuk menanganinya.

Cara membuat Custom Error

Untuk membuat custom error digunakan aturan penulisan berikut ini :
error_function(error_level,error_message,
error_file,error_line,error_context)

Keterangan parameter :
  • error_level, wajib diisi. Merupakan level error untuk mendefinisikan error pada pengguna. Harus berupa nomor yang mengacu pada tabel error dibawah.
  • error_message, wajib diisi. Merupakan pesan error untuk mendefinisikan error pada pengguna
  • error_file, opsional. Merupakan nama file yang memunculkan error.
  • error_line, opsional. Merupakan nomor baris yang memunculkan error.
  • error_context, opsional. Merupakan array yang berisi semua variabel dan error yang dihasilkan pada saat error itu muncul.

Tabel Error Report Level

Nilai Konstan Keterangan
2 E_WARNING Run-time error, tidak fatal. Pelaksanaan script tidak dihentikan
8 E_NOTICE Run-time pemberitahuan. Script menemukan sesuatu yang mungkin error, tetapi juga bisa terjadi saat menjalankan script secara normal
256 E_USER_ERROR User-generated Fatal error. Ini seperti E_ERROR yang ditetapkan oleh programmer menggunakan fungsi PHP trigger_error ()
512 E_USER_WARNING User-generated Warning, tidak fatal. Ini adalah seperti E_WARNING ditetapkan oleh programmer menggunakan fungsi PHP trigger_error ()
1024 E_USER_NOTICE User-generated-Notice. Ini seperti E_NOTICE ditetapkan oleh programmer menggunakan fungsi PHP trigger_error ()
4096 E_RECOVERABLE_ERROR Catchable fatal error.  Ini seperti E_ERROR tetapi bisa ditangkap handler yang dibuat pengguna
8191 E_ALL Semua Error dan Warning

Contoh Membuat Custom Error :

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

Cara mengeset Error Handler

Untuk mengeset Error Handler digunakan fungsi set_error_handler("Custom Error").
Contoh Script Custom Error dan Set Error Handler
<?php  
//membuat fungsi custom error  
function customError($errno, $errstr) {  
 echo "<b>Error:</b> [$errno] $errstr";  
} 

//mengeset error handler  
set_error_handler("customError");  

//memicu terjadinya error  
echo($test);  
?>  
Dan berikut tampilan error yang dihasilkan oleh program diatas :
Error: [8] Undefined variable: test

Menangani Error dengan sistem Reporting melalui Email

Cara ketiga dalam menangani error adalah dengan melaporkan error tersebut. Dalam hal ini error akan dikirimkan melalui email.

Contoh script membuat error reporting melalui email:

<?php  
//membuat custom error  
function customError($errno, $errstr) {  
 echo "<b>Error:</b> [$errno] $errstr<br>";  
 echo "Webmaster telah diberi tahu";  
 error_log("Error: [$errno] $errstr",1,  
 "nama@website.com","From: admin@website.com");  
}  
 
//mengeset error handler  
set_error_handler("customError",E_USER_WARNING);  
 
//memicu terjadinya error  
$test=2;  
if ($test>1) {  
 trigger_error("Angka harus 1 atau lebih kecil",E_USER_WARNING);  
}  
?>  

Tampilan pada browser

Error: [512] Angka harus 1 atau lebih kecil
Webmaster telah diberi tahu

Tampilan pesan yang diterima email

Error: [512] Angka harus 1 atau lebih kecil
Referensi:

1 komentar: