12
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.

MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

  • Upload
    vokhue

  • View
    274

  • Download
    1

Embed Size (px)

Citation preview

Page 1: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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.

Page 2: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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

Page 3: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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:

Page 4: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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.

Page 5: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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:

Page 6: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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

Page 7: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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:

Page 8: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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.

Page 9: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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

Page 10: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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

Page 11: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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

Page 12: MENANGANI KESALAHAN - oneitcommunity.files.wordpress.com · Kesalahan kaidah disebabkan oleh adanya kesalahan dalam menuliskan kaidah perintah. Sebagai contoh, skrip berikut akan

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