Secara umum (tidak hanya dalam pemrograman PHP), ketrampilan untuk membaca pesan kesalahan adalah modal yang sangat penting bagi seorang pemrogram. Tentunya akan sia-sia, jika sistem/program/aplikasi yang kita buat memberikan pesan kesalahan, namun karena kita tidak bisa 'membaca'-nya maka kita akan kebingungan sendiri dalam menyelesaikan kesalahan yang terjadi. Dalam artikel ini akan dijelaskan sedikit mengenai penanganan kesalahan dalam pemrograman PHP, mulai dari pengetahuan mengenai jenis-jenis pesan kesalahan, peng-konfigurasian sistem, cara membaca pesan kesalahan, dan contoh-contoh pesan kesalahan serta cara mengatasinya.
author : cahya dsn
,
published on : August 18th, 2017
updated on : July 23rd, 2020
Adalah suatu keniscayaan dalam pemrograman, jika suatu saat kita menemukan atau mendapati pesan kesalahan dalam program yang kita buat. Tidak terkecuali dalam pemrograman web, khususnya dalam bahasa pemrograman PHP. Ada banyak ragam jenis pesan kesalahan -- dan tentu saja tidak perlu kita hafalkan -- yang bisa kita temui dalam pemrograman dengan PHP.
Secara umum (tidak hanya dalam pemrograman PHP), skill --ketrampilan untuk membaca pesan kesalahan adalah modal yang sangat penting bagi seorang pemrogram. Tentunya akan sia-sia, jika sistem/program/aplikasi yang kita buat memberikan pesan kesalahan, namun karena kita tidak bisa 'membaca'-nya maka kita akan kebingungan sendiri dalam menyelesaikan kesalahan yang terjadi.
Sayangnya, tidak peduli seberapa hati-hati kita saat menulis kode kita, kesalahan adalah fakta kehidupan. PHP akan melaporkan kesalahan (error), peringatan (warning) dan pemberitahuan (notice) untuk banyak masalah pengkodean dan runtime secara umum, dan mengetahui bagaimana mendeteksi dan menangani kesalahan ini akan membuat debugging menjadi lebih mudah.
Dalam artikel ini akan dijelaskan sedikit mengenai penanganan kesalahan dalam pemrograman PHP, mulai dari pengetahuan mengenai jenis-jenis pesan kesalahan, peng-konfigurasian sistem, cara membaca pesan kesalahan, dan contoh-contoh pesan kesalahan serta cara mengatasinya.
Bagi sebagian programmer PHP, mendapat pesan kesalahan yang ditampilkan dilayar browser adalah 'sesuatu', apalagi untuk yang baru-baru saja mengenal PHP. Kurangnya pengetahuan tentang pesan kesalahan dan ketrampilan dalam 'membaca' pesan kesalahan, seringkali menjadikan penanganan terhadap suatu kesalahan (Error Handling) yang terjadi tidak sesuai dengan yang diharapkan.
Ada sebanyak 16 (enam belas) tipe/jenis pesan kesalahan di PHP, beberapa yang sering dijumpai dalam pemrograman PHP secara umum adalah:
Fatal error terjadi ketika PHP mengerti kode yang telah ditulis, namun apa yang diminta oleh kode tidak dapat dilakukan. Fatal error akan menghentikan eksekusi script. Sebagai contohnya adalah jika kita mencoba untuk mengakses fungsi yang belum didefinisikan, maka outputnya adalah fatal error.
Warning error tidak akan menghentikan eksekusi dari script. Alasan utama dari warning error yaitu menyertakan file yang tidak ada atau mengisikan jumlah parameter yang tidak sesuai jumlahnya saat memanggil suatu fungsi.
Peringatan (Warning) adalah pesan seperti "Anda melakukan sesuatu yang salah dan kemungkinan besar akan menyebabkan kesalahan kedepannya, jadi perbaiki."
Parse Error ini terjadi jika ada kesalahan sintaks dalam script dan pesan kesalahan akan muncul pada outputnya ketika dijalankan. Parse error akan menghentikan proses eksekusi script. Ada banyak alasan ketika terjadinya parse error di PHP. Alasan umum pada parse error adalah sebagai berikut:
Notice error sama hal nya dengan Warning Error yaitu ketika terjadi notice error eksekusi script tidak akan berhenti. Notice Error akan terjadi misalnya ketika kita mencoba untuk mengakses variabel yang belum didefinisikan(undefined variable
), konstanta yang belum didefinisikan (undefined constant
), index yang tidak ada (undefined index
) atau diluar jangkauan (undefined offset
) dari suatu array
Pemberitahuan (Notice) adalah pesan nasehat seperti "Anda mungkin sebaiknya tidak melakukan apa yang Anda lakukan"
Dan berikut ini adalah daftar selengkapnya keenambelas tipe/jenis pesan kesalahan di PHP:
Nilai | Konstanta | Deskripsi | Catatan |
---|---|---|---|
1 |
E_ERROR
(integer)
|
Fatal run-time errors. Ini menunjukkan kesalahan yang tidak dapat dipulihkan, seperti masalah alokasi memori. Proses eksekusi script akan menghentikan. | |
2 |
E_WARNING
(integer)
|
Run-time warnings (non-fatal errors). Proses eksekusi script tidak akan menghentikan. | |
4 |
E_PARSE
(integer)
|
Compile-time parse errors. Kesalahan sintak script yang dihasilkan saat parsing script | |
8 |
E_NOTICE
(integer)
|
Run-time notices. Menandakan bahwa dalam script tersebut terdapat suatu indikasi kesalahan, meskipun masih dimungkinkan script berjalan secara normal | |
16 |
E_CORE_ERROR
(integer)
|
Fatal errors yang muncul pada saat PHP diinisialisasi. Ini seperti halnya
E_ERROR , namun pesan kesalahan ini dibangkitkan oleh core dari PHP.
|
|
32 |
E_CORE_WARNING
(integer)
|
Warnings (non-fatal errors) yang muncul pada saat PHP diinisialisasi. Ini seperti halnya E_WARNING , namun pesan kesalahan ini dibangkitkan oleh core dari PHP
|
|
64 |
E_COMPILE_ERROR
(integer)
|
Fatal compile-time errors. Ini seperti halnya E_ERROR ,
, namun pesan kesalahan ini dibangkitkan oleh Zend Scripting Engine.
|
|
128 |
E_COMPILE_WARNING
(integer)
|
Compile-time warnings (non-fatal errors). Ini seperti halnya E_WARNING , namun pesan kesalahan ini dibangkitkan oleh Zend
Scripting Engine.
|
|
256 |
E_USER_ERROR
(integer)
|
User-generated error message. Ini seperti halnya E_ERROR , namun pesan kesalahan ini dihasilkan dari kode PHP dengan menggunakan fungsi PHP trigger_error().
|
|
512 |
E_USER_WARNING
(integer)
|
User-generated warning message. Ini seperti halnya E_WARNING , namun pesan kesalahan ini dihasilkan dari kode PHP dengan menggunakan fungsi PHP trigger_error().
|
|
1024 |
E_USER_NOTICE
(integer)
|
User-generated notice message. Ini seperti halnya E_NOTICE , namun pesan kesalahan ini dihasilkan dari kode PHP dengan menggunakan fungsi PHP trigger_error().
|
|
2048 |
E_STRICT
(integer)
|
PHP menyarankan perubahan pada kode yang dibuat untuk memastikan interoperabilitas dan kompatibilitas terbaik kode tersebut. | Sejak PHP 5 namun tidak termasuk dalam E_ALL sampai PHP 5.4.0 |
4096 |
E_RECOVERABLE_ERROR
(integer)
|
Catchable fatal error. Ini menunjukkan bahwa ada kemungkinan kesalahan berbahaya terjadi, namun tidak meninggalkan Engine dalam kondisi tidak stabil. Jika kesalahan tidak tertangkap oleh user defined handle -- penanganan kesalahan yang ditentukan pengguna -- , maka aplikasi dibatalkan karena merupakan E_ERROR .
|
Sejak PHP 5.2.0 |
8192 |
E_DEPRECATED
(integer)
|
Run-time notices. Menandakan peringatan tentang kode yang tidak akan berfungsi di versi mendatang. | Sejak PHP 5.3.0 |
16384 |
E_USER_DEPRECATED
(integer)
|
User-generated warning message. Ini seperti halnya E_DEPRECATED , namun pesan kesalahan ini dihasilkan dari kode PHP dengan menggunakan fungsi PHP trigger_error().
|
Sejak PHP 5.3.0 |
32767 |
E_ALL
(integer)
|
Semua pesan kesalahan dan peringatan yang didukung, kecuali level E_STRICT sebelum PHP 5.4.0.
|
32767 di PHP 5.4.x, 30719 di PHP 5.3.x, 6143 di PHP 5.2.x, 2047 versi sebelumnya |
menampilkan vs menyembunyikan pesan kesalahan - tbd
Sekarang setelah kita mengetahui tipe kesalahan seperti apa yang akan dihasilkan PHP, kita perlu mengembangkan sebuah rencana untuk berurusan dengan pesan kesalahan tersebut -- disaat pesan kesalahan tersebut muncul. PHP menyediakan empat pilihan untuk penanganan kesalahan sesuai dengan tipe-tipe kesalahaan dan konfigurasi error_reporting dari PHP; yaitu:
Bagian yang (seharusnya) paling mengasikkan jika mendapat pesan kesalahan adalah membaca pesan kesalahan tersebut. Ketrampilan pemrogram PHP dalam 'membaca' pesan kesalahan ini mempunyai kontribusi yang sangat besar untuk menyelesaikan masalah pada pemrograman PHP.
Pesan kesalahan yang muncul adalah sebagai petunjuk awal untuk menangani kesalahan dalam pemrograman PHP. Jika kita tahu dan paham maksud dari pesan kesalahan yang di tampilkan, maka diharapkan penanganan dan penyelesaian kesalahannya akan tepat dan sesuai yang diharapkan. Berikut ini adalah beberapa hal dasar yang perlu diperhatikan dalam membaca pesan kesalahan PHP:
Seperti kita ketahui PHP adalah bahasa pemrograman yang bertipe interpreter, karenanya kode program yang kita tulis akan dibaca oleh PHP dari baris pertama hingga terakhir secara berurut. Berdasarkan fakta ini, jika muncul beberapa pesan kesalahan dalam kode PHP yang kita buat, yang perlu pertama kali kita perhatikan adalah pesan kesalahan yang pertama kali muncul (paling awal/atas). Mengapa? karena bisa jadi pesan-pesan kesalahan yang berikutnya adalah muncul dari akibat kesalahan yang pertama tersebut. Hal ini terutama jika pesan kesalahan yang pertama muncul adalah bertipe warning atau notice, karena script akan tetap dijalankan jika menemui kesalahan bertipe ini.
Secara garis besar, pesan kesalahan dalam PHP ditampilkan dalam format :
<tipe kesalahan> : <pesan kesalahan> <nama file/berkas> <nomor baris>
Keterangan:
<tipe kesalahan>
: <pesan kesalahan>
: <nama file/berkas>
: <nomor baris>
: - tbd
- tbd
- tbd
Fatal Error - tbd
Syntax Error - tbd
Warning Error - tbd
Notice Error - tbd
Deprecated Error - tbd
PHP memberikan laporan kesalahan dalam menanggapi sejumlah kondisi kesalahan internal. Ini dapat digunakan untuk memberi tanda pada sejumlah kondisi yang berbeda, dan dapat juga ditampilkan dan / atau dicatat (log) sesuai kebutuhan.
Setiap kesalahan dalam PHP akan menyertakan tipenya (lihat daftar tipe kesalahan ini , beserta deskripsi singkat tentang perilakunya dan bagaimana hal itu dapat terjadi). Secara umum, penanganan kesalahan dalam PHP ada dua macam, yaitu secara default ditangani oleh PHP sendiri, atau kita juga bisa membuat penanganan kesalahan sendiri
- tbd
- tbd
- tbd