Apa itu Pengecualian?
Kesalahan adalah hasil program yang tidak diharapkan yang tidak dapat ditangani oleh program itu sendiri.
Kesalahan diselesaikan dengan memperbaiki program. Contoh kesalahan adalah loop tak terbatas yang tidak pernah berhenti dijalankan.
Pengecualian adalah hasil program yang tidak diharapkan yang dapat ditangani oleh program itu sendiri.
Contoh pengecualian termasuk mencoba membuka file yang tidak ada.
Pengecualian ini dapat ditangani dengan membuat file atau memberikan opsi kepada pengguna untuk mencari file tersebut.
Dalam tutorial ini, Anda akan belajar-
- Mengapa menangani pengecualian?
- Penanganan Kesalahan PHP
- Kesalahan penanganan contoh
- Perbedaan antara Kesalahan dan Pengecualian
- Beberapa Pengecualian
- Menguji kode
Mengapa menangani pengecualian?
- Hindari hasil yang tidak diharapkan di halaman kami yang dapat sangat mengganggu atau mengganggu pengguna akhir kami
- Tingkatkan keamanan aplikasi kami dengan tidak mengungkapkan informasi yang mungkin digunakan oleh pengguna jahat untuk menyerang aplikasi kami
- Pengecualian Php digunakan untuk mengubah aliran normal program jika terjadi kesalahan yang dapat diprediksi.
Penanganan Kesalahan PHP
Ketika terjadi kesalahan, tergantung pada pengaturan konfigurasi Anda, PHP menampilkan pesan kesalahan di browser web dengan informasi yang berkaitan dengan kesalahan yang terjadi.
PHP menawarkan sejumlah cara untuk menangani kesalahan.
Kami akan melihat tiga (3) metode yang umum digunakan;
- Pernyataan die - fungsi die menggabungkan fungsi echo dan exit menjadi satu. Ini sangat berguna ketika kita ingin mengeluarkan pesan dan menghentikan eksekusi skrip ketika terjadi kesalahan.
- Penangan kesalahan khusus - ini adalah fungsi yang ditentukan pengguna yang dipanggil setiap kali terjadi kesalahan.
- Pelaporan kesalahan PHP - pesan kesalahan tergantung pada pengaturan pelaporan kesalahan PHP Anda. Metode ini sangat berguna dalam lingkungan pengembangan ketika Anda tidak tahu apa yang menyebabkan kesalahan tersebut. Informasi yang ditampilkan dapat membantu Anda men-debug aplikasi Anda.
Kesalahan penanganan contoh
Sekarang mari kita lihat beberapa contoh sederhana dengan rutinitas penanganan kesalahan.
Misalkan kita telah mengembangkan aplikasi yang menggunakan file teks untuk menyimpan data. Kami mungkin ingin memeriksa keberadaan file sebelum kami mencoba membaca data darinya.
Kode di bawah mengimplementasikan contoh di atas.
Dengan asumsi Anda menyimpan file simple_error.php di folder phptuts, buka URL http: //localhost/phptuts/simple_error.php
Anda akan mendapatkan hasil sebagai berikut
Seperti yang Anda lihat dari hasil di atas, itu membuat aplikasi kita terlihat tidak profesional dan dapat mengganggu pengguna.
Kami akan memodifikasi kode di atas dan menulis penangan kesalahan untuk aplikasi
Dengan asumsi Anda menyimpan kode di atas sebagai error_handling.php, buka URL http: //localhost/phptuts/error_handling.php
Catatan: merupakan praktik keamanan yang baik untuk menampilkan pesan seperti yang ditunjukkan di atas daripada menampilkan pesan seperti "File tidak ditemukan".
Mari kita lihat contoh lain yang menggunakan custom error handler.
Penangan kesalahan khusus akan ditetapkan sebagai fungsi penanganan kesalahan PHP default dan pada dasarnya akan menampilkan nomor dan pesan kesalahan.
Kode di bawah ini menggambarkan implementasi contoh di atas
Buka URL http: //localhost/phptuts/custom_error_handler.php Anda akan mendapatkan hasil sebagai berikut
.
Seperti yang Anda lihat dari contoh di atas, penanganan kesalahan khusus sangat berguna
- Mereka memungkinkan kami untuk menyesuaikan pesan kesalahan.
- Penangan kesalahan khusus juga dapat memasukkan kesalahan logging dalam file / database, mengirim email kepada pengembang, dll.
Sekarang mari kita lihat jenis penanganan kesalahan yang ketiga. Kami akan menggunakan fungsi PHP built in fungsi error_reporting. Ini memiliki sintaks dasar berikut
SINI,
- "Error_reporting" adalah fungsi pelaporan kesalahan PHP
- "$ Reporting_level" bersifat opsional, dapat digunakan untuk menyetel tingkat pelaporan. Jika tidak ada tingkat pelaporan yang ditentukan, PHP akan menggunakan tingkat pelaporan kesalahan default seperti yang ditentukan dalam file php.ini.
Tingkat Pelaporan | Deskripsi | Contoh |
---|---|---|
PERINGATAN | Hanya menampilkan pesan peringatan. Tidak menghentikan eksekusi skrip | error_reporting (E_WARNING); |
E_NOTICE | Menampilkan pemberitahuan yang dapat terjadi selama eksekusi normal program atau bisa menjadi kesalahan. | error_reporting (E_ NOTICE); |
E_USER_ERROR | Menampilkan kesalahan yang dibuat pengguna, yaitu penanganan kesalahan khusus | error_reporting (E_ USER_ERROR); |
E_USER_WARNING | Menampilkan pesan peringatan yang dibuat pengguna | error_reporting (E_USER_WARNING); |
E_USER_NOTICE | Menampilkan pemberitahuan yang dibuat pengguna | error_reporting (E_USER_NOTICE); |
E_RECOVERABLE_ERROR | Menampilkan kesalahan yang tidak fatal dan dapat ditangani menggunakan penangan kesalahan khusus | error_reporting (E_RECOVERABLE_ERROR); |
E_ALL | Menampilkan semua kesalahan dan peringatan | error_reporting (E_ ALL); |
Perbedaan antara Kesalahan dan Pengecualian
- Pengecualian dilemparkan dan dimaksudkan untuk ditangkap sementara kesalahan umumnya tidak dapat dipulihkan.
-
Pengecualian ditangani dengan cara berorientasi objek.
Ini berarti ketika pengecualian dilemparkan; objek pengecualian dibuat yang berisi detail pengecualian.
Tabel di bawah ini menunjukkan metode objek pengecualian
metode | Deskripsi | Contoh |
---|---|---|
getMessage () | Menampilkan pesan pengecualian itu |
getMessage();?> |
ambil kode() | Menampilkan kode numerik yang mewakili pengecualian |
getCode();?> |
getFile () | Menampilkan nama file dan jalur tempat terjadinya pengecualian |
getFile();?> |
getLine () | Menampilkan nomor baris tempat pengecualian terjadi |
getLine();?> |
getTrace () | Menampilkan larik lacak balik sebelum pengecualian |
getTrace());?> |
getPrevious () | Menampilkan pengecualian sebelumnya sebelum yang sekarang |
getPrevious();?> |
getTraceAsString () | Menampilkan lacak balik dari pengecualian sebagai string, bukan larik |
getTraceAsString();?> |
__toString () | Menampilkan seluruh pengecualian sebagai string |
__toString();?> |
Di bawah ini adalah sintaks dasar untuk membuat pengecualian.
SINI,
- "Melempar" adalah kata kunci yang digunakan untuk membuang pengecualian
- "Exception baru (...)" membuat objek pengecualian dan meneruskan "Ini adalah contoh pengecualian" string sebagai parameter pesan.
Kode di atas mengeluarkan pesan berikut.
Sekarang kita akan melihat contoh yang mengimplementasikan pengecualian lemparan dan tangkap.
Kami akan memodifikasi contoh di atas dan menyertakan coba, lempar, dan tangkap.
Ini memiliki sintaks dasar berikut.
SINI,
- “Coba {…}” adalah blok kode yang akan dieksekusi yang berpotensi menimbulkan pengecualian
- "Catch (Exception $ e) {…}" adalah blok kode yang menangkap pengecualian yang dilempar dan menetapkan objek pengecualian ke variabel $ e.
Kode di bawah ini menunjukkan contoh pengecualian dasar dengan penerapan pengecualian coba, lempar, dan tangkap.
Program dengan sengaja membuat pengecualian yang kemudian ditangkapnya.
getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>
Buka URL http: //localhost/phptuts/exception_handling.php Anda akan mendapatkan hasil sebagai berikut.
Dimungkinkan juga untuk membuat beberapa pengecualian untuk satu pernyataan percobaan php tergantung pada jenis pengecualian yang diberikan.
Lihat artikel tentang MySQL, akses data PHP
… Untuk contoh implementasi beberapa pengecualianBeberapa Pengecualian
Beberapa pengecualian menggunakan beberapa blok coba tangkap untuk menangani pengecualian yang dilempar. Beberapa pengecualian berguna bila;
- Anda ingin menampilkan pesan yang disesuaikan tergantung pada pengecualian yang dilemparkan
- Anda ingin melakukan operasi unik bergantung pada pengecualian yang dilemparkan
Diagram alir di bawah mengilustrasikan cara kerja beberapa pengecualian
Mari kita lihat contoh yang menggunakan beberapa pengecualian.
Kami akan mengubah kode yang membagi angka dengan penyebut yang diteruskan.
Kami mengharapkan dua jenis pengecualian terjadi;
- Pembagian dengan nol
- Pembagian dengan angka negatif
Demi kesederhanaan, kami hanya akan menampilkan tipe pengecualian di blok tangkapan kami.
PHP yang dibangun di kelas Exception digunakan untuk melempar pengecualian.
Kami akan membuat dua kelas yang memperluas kelas pengecualian dan menggunakannya untuk melempar pengecualian.
Kode di bawah ini menunjukkan implementasinya.
Menguji kode
Kami akan menganggap Anda menyimpan multiple_exceptions.php di folder phptuts.
Jelajahi ke URL http: //localhost/phptuts/multiple_exceptions.php
Beralih kembali ke file PHP dan berikan -1 sebagai parameter seperti yang ditunjukkan pada diagram berikut.
Jelajahi ke URL http: //localhost/phptuts/multiple_exceptions.php .
Hasil apa yang Anda dapatkan? Lulus 3 sebagai parameter.
Hasil apa yang Anda dapatkan?
Ringkasan
- Kesalahan adalah hasil yang tidak diharapkan yang dihasilkan oleh kode PHP
- Penanganan kesalahan meningkatkan kinerja aplikasi
- PHP memiliki fungsi bawaan yang dapat digunakan untuk menyesuaikan cara PHP melaporkan kesalahan
- Pengecualian seperti kesalahan, tetapi bisa ditangkap menggunakan blok tangkap saat dilempar.
- Menampilkan pesan kesalahan yang menunjukkan informasi kesalahan dianggap sebagai praktik keamanan yang buruk.