Pada saat membuat sebuah aplikasi web, penanganan error (error handling) merupakan hal yang sangat penting. Penanganan error yang standar di PHP sangat sederhana. Error dikirim ke browser berisi pesan error, nama file, baris kode ke berapa tempat terjadinya error. Tanpa penanganan error yang baik, tentunya pada saat terjadi error, error akan tampil di browser dan dilihat oleh semua pengguna. Hal ini bisa menimbulkan ancaman terhadap keamanan website. PHP telah menyediakan function function untuk penanganan error seperti dijelaskan di Error Handling and Logging.
Penanganan Error Sederhana mengunakan function die()
Function die([string $message]) berfungsi untuk menghentikan eksekusi baris kode berikutnya dan memberi output parameter optional $message. Contoh:
<?php
//tanpa error handling
echo $row['nama_field'];
}
?>
mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2) in /home/ellyxc/public_html/tutorial/error/die.php on line 3
Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2) in /home/ellyxc/public_html/tutorial/error/die.php on line 4
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/ellyxc/public_html/tutorial/error/die.php on line 4
Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2) in /home/ellyxc/public_html/tutorial/error/die.php on line 5
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/ellyxc/public_html/tutorial/error/die.php on line 5
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/ellyxc/public_html/tutorial/error/die.php on line 6
<?php
//dengan error handling
echo $row['nama_field'];
}
?>
Tidak bisa melalukan koneksi ke database
Setting Error Reporting Level
PHP memberi kemampuan untuk menentukan error error apa saja yang ditampilkan menggunakan functionerror_reporting([int $level ]). Parameter $level bisa diisi dengan nilai nilai berikut:
Nilai | Konstanta | Deskripsi |
---|---|---|
1 | E_ERROR | Fatal run-time errors. Error yang tidak bisa dihandel, seperti masalah alokasi memori. Eksekusi skrip berhenti. |
2 | E_WARNING | Run-time warnings (non-fatal errors). Eksekusi Skrip tidak berhenti. |
4 | E_PARSE | Compile-time parse errors. Error yang terjadi karena kesalahan penulisan kode php. |
8 | E_NOTICE | Run-time notices. Error yang mengindikasikan bahwa skrip bisa menimbulkan error yang lain. |
256 | E_USER_ERROR | Pesan error yang digenerate oleh user. Seperti E_ERROR, tapi digenerate menggunakan function trigger_error(). |
512 | E_USER_WARNING | Pesan error yang digenerate oleh user. Seperti E_WARNING, tapi digenerate menggunakan function trigger_error(). |
1024 | E_USER_NOTICE | Pesan error yang digenerate oleh user. Seperti E_NOTICE, tapi digenerate menggunakan function trigger_error(). |
2048 | E_STRICT | Error yang memberikan sugesti perubahan pada kode Anda untuk memastikan interoperabilitas terbaik dan kompatibilitas kode php Anda. |
30719 | E_ALL | Menampilkan semua error kecuali E_STRICT. |
<?php
//menampilkan semua error
//menampilkan semua error termasuk E_STRICT
//tidak menampilkan error
?>
Tidak Menampilkan Error
Dari pada menampilkan error yang tidak dimengerti oleh pengguna, terkadang lebih baik tidak menampilkan error sama sekali, tetapi hanya mencatat error yang terjadi ke dalam sebuah file. Untuk itu bisa gunakan kode di bawah.
<?php
echo $row['nama_field'];
}
?>
[21-Nov-2010 11:57:56] PHP Warning: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2) in /home/ellyxc/public_html/tutorial/error/die.php on line 6
[21-Nov-2010 11:57:56] PHP Stack trace:
[21-Nov-2010 11:57:56] PHP 1. {main}() /home/ellyxc/public_html/tutorial/error/die.php:0
[21-Nov-2010 11:57:56] PHP 2. mysql_connect() /home/ellyxc/public_html/tutorial/error/die.php:6
Membuat Custom Error Handler
Selain menyediakan penanganan error standar, PHP juga memberikan kemampuan untuk membuat sebuah function yang bertugas untuk menangani error yang terjadi yang disebut dengan Custom Error Handler. Sebuah Custom Error Handler memiliki format seperti ini
error_funciton($error_level,$error_message, $error_file,$error_line,$error_context)
Parameter | Deskripsi |
---|---|
error_level | level error |
error_message | Pesan error yang terjadi |
error_file | Optional. Nama file tempat terjadi error |
error_line | Optional. Nomor baris kode tempat terjadi error |
error_context | Optional. Array yang berisi semua variable dan valuenya yang menyebabkan terjadinya error |
<?php
function customError($errorLevel,$errorMsg){
$_SESSION['error_msg'] = $errorMsg;
}
echo $row['nama_field'];
}
?>
<?php
?>
<html>
<head>
<title>Error</title>
</head>
<body>
<h1>Error</h1>
<p>Maaf kami tidak bisa memproses request anda.</p>
<p>Pesan Error: <?php echo $_SESSION['error_msg'];?></p>
</body>
</html>
Mengenerate atau Men-trigger Error
PHP memberikan kemampuan untuk mengenerate custom error message menggunakan function trigger_error(). Function ini bisa digunakan misalnya pada saat pengguna memasukkan karakter karakter ilegal, seperti memasukkan tag html. Contoh:
$input = "<strong>hurup tebal</strong>";
}
function customError($errorLevel,$errorMsg){
$_SESSION['error_msg'] = $errorMsg;
}
$input = "<strong>hurup tebal</strong>";
}
Mengirim Email Saat Terjadi Error
Bagi para programmer atau webmaster, mendapatkan email saat terjadi error sangat membantu untuk mengambil tindakan yang cepat dan bila diperlukan untuk memperbaiki kode yang ada. Untuk itu bisa menggunakan kode seperti:
function customError($errorLevel,$errorMsg){
echo "<b>Error:</b> [$errorLevel] $errstr<br />";
echo "Admin terlah diberi tahu";
"admin@example.com","From: error@example.com");
}
$input = "<strong>hurup tebal</strong>";
}
Rangkuman
PHP memiliki penanganan error standar yang sederhana. Error dikirim ke browser berisi pesan error, nama file, baris kode ke berapa tempat terjadinya error. PHP memberikan kemampuan penanganan error yang lebih baik mulai dari menggunakan function die() sampai menggunakan custom error handler. Dengan function error_reporting() bisa difilter error error apa saja yang ingin ditampilkan. Untuk tidak menampilkan error bisa digunakan function ini_set('display_errors', 'Off'); dan function ini_set('error_log', 'logs/error.log'); untuk menyimpan error ke dalam file "logs/error.log", menggunakan function trigger_error() untuk mengenerate custom error message, serta function error_log() untuk mengirim email pada saat terjadi error.Referensi
Anda sedang membaca artikel tentang Penanganan Error di PHP dan anda bisa menemukan artikel Penanganan Error di PHP ini dengan url https://kucing4rt.blogspot.com/2012/08/penanganan-error-di-php.html. Terima kasih telah membaca Penanganan Error di PHP .
Terima kasih telah berkunjung.
Jangan lupa tulis komentarnya ya.