Sabtu, 07 Mei 2011

imk

Nama : Seto Prayogo

Kelas : 2kb01

Npm : 25109686

Tugas : IMK

  • ABSTRAKSI

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.

Petunjuk Error Handling pada aplikasi java Cimande

Aplikasi cimande secara default menggunakan database MySQL. Penanganan format DATETIME atau TIMESTAMP sangatlah merepotkan. Versi JDK dengan versi MySQL sangatlah saling berkaitan, dan tentunya format penanggalan default Sistem Operasi juga mempengaruhi penanganan penyimpanan tanggal.

Uji coba kami pada beberapa komputer, mulai dari penginstalan Cimande sampai muncul error yang terjadi rata-rata error disebabkan oleh penanganan DATETIME pada field create_date dan update_date oleh MySQL dan JVM yang belum bagus. Dengan catatan penamaan package, class dan path lokasi file sudah benar.

Berikut kami tuliskan error yang mungkin terjadi beserta bagaimana penanganannya:
Penanganan Error secara Umum:
l Jika error terjadi, kita lihat pesan error yang muncul di Browser. Pastikan kita baca pesan yang bisa kita cerna (pesan komunikatif dari sistem).
Jika pesan dari browser sudah cukup jelas, selanjutnya
l kita tangani sesuai pengetahuan kita atau lihat pada list error di bawah ini.
Jika pesan dari browser belum cukup jelas, selanjutnya lihat
l error yang muncul di Console. Kita lihat pesan error mulai dari baris paling bawah pelan-pelan kita lihat ke atas. Pesan Error yang Komunikatif biasanya terdapat tulisan "Caused By:", "SEVERE:", "INFO:", dll. Selanjutnya kita tangani sesuai pengetahuan kita atau lihat list error di bawah ini.
Jika error terjadi dan kita tidak ada
l pengetahuan tentangnya, kita tanyakan ke Internet melalui Google, Yahoo atau Forum2 Java.

List Error beserta penanganannya

Error/ Penyebab /Penanganan
There is no Action mapped for namespace /module/akademi_jeni and action name filter. - [unknown location] Belum ada mapping action dengan nama filter. Definisikan mapping action pada file konfigurasi struts.xml (file lain yang di-include-kan)
HTTP Status 404:
The requested resource (/cimeng/module/akademi_jeni/create.action) is not available. - Aplikasi tidak berhasil dijalankan dengan baik
- Resource tidak ditemukan, biasanya kesalahan penulisan path lokasi/filename/ekstension
- Tag XML yang tidak lengkap/salah tulis - Cek Error di console
- Temukan file penyebab error
- Perbaiki penulisan/tag
Invalid date format '1980-01-01 00:00:00' - Format Date Sistem operasi tidak berformat yyyy-mm-dd h:i:s
- Versi MySQL dan JDK tidak kompatibel - Ganti Format Sistem Operasi melalui Control Panel
- Upgrade ke JDK 6
- Tambahkan kode untuk mengeset nilai kolom created_date, update_date.
Berikut kodenya (gunakan sesuai kebutuhan):

LogInformation log = new LogInformation();

log.setCreateDate(new Timestamp(System.currentTimeMillis())); log.setLastUpdateDate(new Timestamp(System.currentTimeMillis()));
log.setCreateBy(sessionCredentials.getCurrentUser().getId());
log.setLastUpdateBy(sessionCredentials.getCurrentUser().getId());

sebelum PersistenceManager menyimpan object, kita set dulu LogInformationnya.
Misal: Objectnya academy, maka cara mengeset LogInformation-nya:

getAcademy().setLogInformation(log

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

  • PENDAHULUAN

saat ini perkembangan dunia maya sudah berkembang sangat pesat, banyak sekali orang orang memanfatkan internet untuk mencari tau tentang papa yang mereka inginketahui.nah bias ada kemungkinan saat kita berselancar di internet banyak mengalami masalah masalah seperti error ,dan lain lainnya

  • PEMBAHASAN

Penanganan Error Sederhana mengunakan function die()


Function die([string $message]) berfungsi untuk menghentikan eksekusi baris kode berikutnya dan memberi output parameter optional $message. Contoh:

  1. //tanpa error handling
  2. $connection = mysql_connect("localhost", "user", "password");
  3. mysql_select_db("test");
  4. $result = mysql_query("select * from nama_table");
  5. while($row = mysql_fetch_array($result)){
  6. echo $row['nama_field'];
  7. }
  8. ?>


tanpa error handling seperti kode php diatas, pada saat tidak bisa melakukan koneksi ke database mysql, maka akan muncul pesan error seperti ini:

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


tentu saja pengguna akan bingung melihat error di atas, dengan function die(), pesan error bisa diminimalisir seperti:

  1. //dengan error handling
  2. $connection = mysql_connect("localhost", "user", "password")
  3. or die('Tidak bisa melalukan koneksi ke database');
  4. mysql_select_db("test");
  5. $result = mysql_query("select * from nama_table");
  6. while($row = mysql_fetch_array($result)){
  7. echo $row['nama_field'];
  8. }
  9. ?>


pada saat tidak bisa melakukan koneksi ke database, kode di atas akan memberi output seperti ini

Tidak bisa melalukan koneksi ke database

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.

  1. error_reporting(E_ALL);
  2. ini_set('display_errors', 'Off');
  3. ini_set('log_errors', 'On');
  4. ini_set('error_log', 'logs/error.log');
  5. $connection = mysql_connect("localhost", "user", "password");
  6. mysql_select_db("test");
  7. $result = mysql_query("select * from nama_table");
  8. while($row = mysql_fetch_array($result)){
  9. echo $row['nama_field'];
  10. }
  11. ?>

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)


Contoh:

  1. function customError($errorLevel,$errorMsg){
  2. @session_start();
  3. $_SESSION['error_msg'] = $errorMsg;
  4. header("Location: error.php");
  5. exit;
  6. }
  7. set_error_handler("customError");
  8. error_reporting(E_ALL);
  9. $connection = mysql_connect("localhost", "user", "password");
  10. mysql_select_db("test");
  11. $result = mysql_query("select * from nama_table");
  12. while($row = mysql_fetch_array($result)){
  13. echo $row['nama_field'];
  14. }
  15. ?>


Baris 2-7 merupakan contoh Custom Error Handler, pesan error disimpan ke dalam sebuah session, dan pengguna dibawa ke halaman "error.php" pada saat terjadi error. Di baris 8 digunakan function set_error_handler($handler); untuk menentukan Custom Error Handler yang digunakan pada saat terjadi error. Parameter $handler diisi dengan string nama function Custom Error Handler. File "error.php" bisa seperti berikut.

  1. session_start();
  2. ?>
  3. Error
  4. Error

  5. Maaf kami tidak bisa memproses request anda.

  6. Pesan Error:

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:

  1. $input = "hurup tebal";
  2. if(preg_match('/<(.+)>/', $input)){
  3. trigger_error("anda tidak boleh memasukkan html tag");
  4. }


Menggunakan trigger_error bersama Custom Error Handler

  1. function customError($errorLevel,$errorMsg){
  2. @session_start();
  3. $_SESSION['error_msg'] = $errorMsg;
  4. header("Location: error.php");
  5. exit;
  6. }
  7. set_error_handler("customError", E_USER_WARNING);
  8. $input = "hurup tebal";
  9. if(preg_match('/<(.+)>/', $input)){
  10. trigger_error("anda tidak boleh memasukkan html tag", E_USER_WARNING);
  11. }

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:

  1. function customError($errorLevel,$errorMsg){
  2. echo "Error: [$errorLevel] $errstr
    ";
  3. echo "Admin terlah diberi tahu";
  4. error_log("Error: [$errorLevel] $errorMsg",1,
  5. "admin@example.com","From: error@example.com");
  6. }
  7. set_error_handler("customError", E_USER_WARNING);
  8. $input = "hurup tebal";
  9. if(preg_match('/<(.+)>/', $input)){
  10. trigger_error("anda tidak boleh memasukkan html tag", E_USER_WARNING);
  11. }


Cara ini tidak disarankan untuk digunakan pada setiap error yang terjadi (bisa menyebabkan spamming). Error error lain lebih baik disimpan di server dalam sebuah file atau media lain.

  • PENUTUP


Sekian penjelasan mengenai error handling ,mohon maaf apabila ada kesalahan.

  • Referensi
  • http://www.php .net/manual/en/book.errorfunc.php
  • http://www.w3schools.com