Upload
vokhue
View
279
Download
1
Embed Size (px)
Citation preview
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 1 [email protected]
MENANGANI KESALAHAN
Pendahuluan
Sebelum terlalu jauh mempelajari/menguasai pemrograman PHP. Pada kesempatan ini,
Saya akan memperkenalkan berbagai cara menangani kesalahan, seperti mencegah
kesalahan yang bertambah banyak, menghilangkan pesan kesalahan, dan juga cara
mencari kesalahan.
Suatu kesalahan seringkali menyebabkan browser menampilkan pesan kesalahan yang
akan membingunkan pemakai. Jadi alangkah baiknya kalau kesalahan-kesalahan yang
dibangkitkan oleh PHP tidak tertampil di browser dan sebagai penggantinya Anda bisa
mengatur sendiri pesan yang hendak disampaikan ke pemakai. Pesan kesalahan yang
diberikan oleh PHP terkadang mengandung path berkas atau nama tabel data yang
seharusnya bersifat rahasia (tidak boleh diketahui oleh pemakai).
Selain itu Anda juga dapat mengatur agar kalau sesuatu fungsi menghasilkan nilai False,
maka pernyataan-pernyataan tertentu tidak dijalankan sehingga tidak menyebabkan
kesalahan-kesalahan yang bersifat merambat.
Macam-macam Kesalahan
Secara prinsip, kesalahan dapat dikelompokkan menjadi tiga macam, yaitu:
1. Kesalahan kaidah (sintax error),
2. Kesalahan semantik, dan
3. Kesalahan nalar.
Kesalahan Kaidah
Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah.
Sebagai contoh, skrip berikut akan membuat PHP menampilkan kesalahan sebagaimana
diperlihatkan Gambar 1.
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 2 [email protected]
Gambar 1 Kesalahan karena salah kaidah
Penulisan:
$x = ($x + 6 * 7;
Menimbulkan kesalahan, karena tanda (semestingan ditutup dengan tanda). Misalnya:
$x = ($x + 6) * 7;
Kesalahan seperti itu terdeteksi sewaktu proses pengompilasian (diketahui oleh parser).
Penyebab utama kesalahan kaidah biasanya berupa salah satu dari hal berikut ini:
PHP4 sampai PHP versi terbaru akan membuat seluruh kode diperiksa oleh parser
terlebih dulu sebelum dijalankan. Prosesnya disebut dengan parsing atau kompilasi.
Itulah sebabnya kesalahan kaidah juga disebut kesalahan kompilasi.
Note
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 3 [email protected]
Salah ketik.
Misalnya print ditulis menjadi prin.
Konstruksi tidak lengkap.
Misalnya kurang tanda } sebagaimana pada contoh skrip salah2.php.
Kurang tanda titik koma di akhir suatu pernyataan.
Contoh:
print(“Pemrograman”)
print(“PHP”);
Tampak bahwa print pertama tidak diakhiri dengan titik koma.
Suatu literal string belum diakhiri dengan tanda petik ganda (“).
Contoh:
print(“PHP);
Yang benar adalah:
print(“PHP”);
Kesalahan kaidah harus segera dibetulkan supaya kode bisa dijalankan.
Kesalahan Semantik
Kesalahan semantik biasanya juga disebut kesalahan sewaktu eksekusi (runtime error).
Kesalahan ini berlangsung ketika kode dijalankan. Sebagaimana contoh, perhatikan skrip
berikut:
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 4 [email protected]
Secara kaidah, tidak ada yang salah. Namun, jiika Anda memanggil skrip di atas maka akan
terjadi kesalahan seperti berikut:
Gambar 2 Kesalahan hasil skrip salah2.php
Kesalahan di atas tak akan terjadi seandainya berkas takada terdapat pada direktori kerja.
Tampak bahwa kesalahan pada baris 6 terjadi karena kesalahan pada baris sebelumnya
(baris 5). Untuk mengatasi kesalahan merambat seperti itu, Anda bisa menuliskan kode
seperti berikut:
Bila Anda mencoba memanggil skrip di atas, Anda akan menjumpai kesalahan yang lebih
sedikit dibandingkan dengan contoh sebelumnya.
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 5 [email protected]
Gambar 3 Efek pencegahan kesalahan yang merambat
Agar pesan seperti diatas juga tidak muncul, Anda bisa melakukan penanganan dengan
memeriksa berkas takada terlebih dulu, sebagaimana diperlihatkan pada skrip berikut:
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 6 [email protected]
Gambar 4 Pesan kesalahan PHP tidak tertampil
Alternatif lain yaitu dengan menambahkan @ di depan fopen seperti pada skrip berikut:
Tanda @ digunakan untuk menghilangkan pesan yan dihasilkan oleh fopen kalau terjadi
suatu kesalahan. Secara lengkap, pernyataan:
$fp = @fopen("takada", "r") or
die("Berkas takada tidak ditemukan");
dimaksudkan untuk membuka berkas takada. Sekiranya berhasil dibuka, fungsi fopen akan
meletakkan pointer ke variabel fp. Namun, kalau fopen gagal membuka berkas takada,
maka die akan dijalankan dan skrip berakhir.
Kesalahan Nalar
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 7 [email protected]
Kesalahan Nalar merupakan jenis kesalahan yang kadangkala sulit untuk mencari
penyebabnya. Kesalahan ini tidak menimbulkan pesan kesalahan, tetapi memberikan hasil
yang keliru. Sebagai contoh, Anda bermaksud meghitung pembayaran yang dipotong
sebesar 10% terhadap total pembelian. Kode yang Anda tuliskan misalnya sebagai berikut:
Jika Anda panggil skrip di atas, Anda akan memperoleh hasilnya, walau salah. Penyebab
kesalahan di atas adalah karena logika perhitungan pembayaran tidak benar. Seharusnya
pernyataan:
$pembayaran = $pembelian - 10 * $pembelian;
ditulis menjadi
$pembayaran = $pembelian – 10/100 * $pembelian;
Atau
$pembayaran = $pembelian – 0.1 * $pembelian;
Pada program yang kompleks, kesalahan seperti ini terkadang sulit untuk dideteksi. Untuk
mencari penyebab kesalahan seperti itu, biasanya dilakukan dengan menambahkan
pernyataan print. Misalnya terdapat skrip seperti berikut:
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 8 [email protected]
Bila diketahui bahwa hasil akhir (gaji bersih) salah, maka Anda bisa menelusuri penyebab
kesalahan dengan menambahkan beberapa print. Sebagai contoh, Anda bisa
menambahkan sejumlah print pada posisi tertentu seperti berikut:
Seperti pada gambar di atas, pada baris skrip 8 dan 12 merupakan pernyataan-pernyataan
print yang ditambahkan.
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 9 [email protected]
Pesan Kesalahan PHP
Kalau Anda memperhatikan, pesan kesalahan PHP mempunyai pola seperi berikut:
Level kesalahan: pesan_kesalahan nama_berkas baris_kesalahan
Level kesalahan menyatakan tingkat kesalahan. Beberapa di antara level pesan kesalahan
berupa:
Parse error, menyatakan kesalahan kaidah. Pada PHP3, kesalahan kaidah bisa
terjadi setelah pernyataan-pernyataan yang benar dieksekusi. Pada PHP4, bila ada
kesalahan sintaks, tak satupun pernyataan akan dijalankan.
Fatal Error, disebabkan kesalahan semantik yang menyebabkan PHP segera
menghentikan eksekusi program.
Warning, akan membat kesalahan ditampilkan, tetapi pengeksekusian akan tetap
dilakukan.
Notice
Pesan-pesan kesalahan sesungguhnya dapat diatur agar tidak tampil. Hal ini dapat
dikerjakan dengan menggunakan fungsi error_reporting yang mempunyai format
pemanggilan sebagai berikut:
error_reporting([level]);
bila level kesalahan tidak disebutkan, fungsi ini memberikan nilai balik berupa bilangan bulat
yang menyatakan level-level kesalahan yang akan ditampikan sekiranya kesalahan terjadi.
Adapun argument fungsi ini dapat berupa nilai level pesan kesalahan yang akan ditampilkan
sekiranya kesalahan tersebut terjadi. Tabel 1 memperlihatkan nilai pesan kesalahan
berserta nama konstantanya.
Tabel 1 Level kesalahan
Level Kesalahan Konstanta Kesalahan
1 E_ERROR Fatal error
2 E_WARNING Warning
4 E_PARSER Parse error
8 E_NOTICE Notice
Untuk mematikan semua penampilan pesan kesalahan, Anda bisa memanggil:
Beberapa kemungkinan nilai untuk mengatur error_reporting dapat dilihat pada
PHP manual.
Note
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 10 [email protected]
error_reporting(0);
untuk menghidupkan penampilan semua kesalahan, gunakan:
error_reporting(E_ALL);
Untuk menampilkan pesan kesalahan yang tergolong sebagai parser error dan warning,
Anda bisa memanggil:
error_reporting(E_PARSER | E_WARNING);
Skrip berikut merupakan pengembangan dari skrip1.php.
Bila skrip dipanggil akan diperoleh hasil kosong. Tak ada peringatan yang ditampilkan
(bandingkan dengan hasil pada gambar 1).
Gambar 5 Seluruh pesan kesalahan tidak tertampil
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 11 [email protected]
Pada proses pembuatan skrip, sebaiknya Anda jangan mematikan fasilitas
pelaporan kesalahan karena akan menyulitkan Anda sendiri dalam
melakukan pencarian kesalahan.
Bila Anda ingin mengatur level pesan kesalahan yang akan tertampil untuk
semua skrip, Anda bisa mengaturnya melalui direktif error_reporting
php.ini
Note
oneitcommunity.wordpress.com Copyright © 2012 ONE IT Community
Serdiwansyah Nur Aisyah 12 [email protected]
Referensi
Beberapa buku yang saya pakai sebagai referensi dalam membuat tutorial pembelajaran ini
adalah:
Kadir, Abdul, Dasar Pemrograman Web Dinamis Menggunakan PHP, Penerbiat Andi,
Yogyakarta, 2002