Catatan. Pengecualian hanya boleh digunakan dengan kondisi kesalahan, dan tidak boleh digunakan untuk melompat ke tempat lain dalam kode pada titik tertentu
Penggunaan kebijakan Pengecualian
Ketika pengecualian dilemparkan, kode berikut tidak akan dieksekusi, dan PHP akan mencoba menemukan blok "catch" yang cocok.
Jika pengecualian tidak tertangkap, kesalahan fatal akan dikeluarkan dengan pesan "Pengecualian Tidak Tertangkap" .
Mari kita coba membuang pengecualian tanpa menangkapnya
Kode di atas akan mendapatkan error seperti ini
Kesalahan fatal. Pengecualian yang tidak tertangkap 'Pengecualian'
dengan pesan 'Nilai harus 1 atau di bawah' di C. \webfolder\tes. php. 6
Jejak tumpukan. #0 C. \webfolder\tes. php(12)
checkNum(28) #1 {main} dilempar ke dalam C. \webfolder\tes. php online 6
Cobalah, lempar dan tangkap
Untuk menghindari error dari contoh di atas, kita perlu membuat kode yang tepat untuk menangani exception tersebut
Kode pengecualian yang tepat harus disertakan
- Coba - Fungsi yang menggunakan pengecualian harus berada di dalam blok "coba" . Jika pengecualian tidak terpicu, kode akan dilanjutkan seperti biasa. Namun jika pengecualian dipicu, pengecualian "thrown"
- Throwing - Inilah cara Anda memicu pengecualian. Setiap "throw" harus memiliki setidaknya satu "catch"
- Catch - Blok "catch" menangkap pengecualian dan membuat objek yang berisi informasi pengecualian
Mari coba memicu pengecualian dengan kode yang valid
Kode di atas akan mendapatkan error seperti ini
Pesan. Nilai harus 1 atau lebih rendah
Sebuah contoh menjelaskan
Kode di atas melempar pengecualian dan menangkapnya
- Fungsi checkNum() dibuat. Ini memeriksa apakah jumlahnya lebih besar dari 1. Jika demikian, pengecualian dilemparkan
- Fungsi checkNum() dipanggil dalam "try" blokir
- Pengecualian dalam checkNum() fungsi dilemparkan
- Blok "catch" menangkap pengecualian dan membuat objek ($e) yang berisi informasi pengecualian
- Pesan kesalahan dari pengecualian digaungkan dengan memanggil $e-> getMessage() dari objek pengecualian< /a>
Namun, salah satu cara untuk menyiasati aturan "setiap lemparan harus memiliki tangkapan" adalah dengan menyetel penangan pengecualian tingkat atas untuk ditangani kesalahan yang lolos.
Membuat Kelas Pengecualian Khusus
Untuk membuat penangan pengecualian khusus Anda harus membuat kelas khusus dengan fungsi yang dapat dipanggil saat terjadi pengecualian di PHP. kelas harus merupakan perpanjangan dari kelas pengecualian
Kelas pengecualian khusus mewarisi properti dari kelas pengecualian PHP dan Anda dapat menambahkan fungsi khusus untuknya
Mari buat kelas pengecualian
Kelas baru adalah salinan dari kelas pengecualian lama dengan penambahan fungsi errorMessage() . Karena merupakan salinan dari kelas lama, dan mewarisi properti dan metode dari kelas lama, kita dapat menggunakan metode kelas pengecualian seperti getLine() dan getFile() dan getMessage() .
Sebuah contoh menjelaskan
Kode di atas melempar pengecualian dan menangkapnya dengan kelas pengecualian khusus
- customException() dibuat sebagai perpanjangan dari kelas pengecualian lama. metode ini mewarisi semua metode dan properti dari kelas exception
- Fungsi errorMessage() dibuat. Fungsi ini mengembalikan pesan kesalahan jika alamat email tidak valid
- Variabel $email diatur ke string yang bukan merupakan alamat email yang valid
- Blok "coba" dijalankan dan pengecualian dilemparkan karena alamat email tidak valid
- Blok "catch" menangkap pengecualian dan menampilkan pesan kesalahan
beberapa pengecualian
Skrip dapat menggunakan beberapa pengecualian untuk memeriksa beberapa kondisi
Dimungkinkan untuk menggunakan banyak blok if. lain, beralih, atau membuat beberapa pengecualian. Pengecualian ini dapat menggunakan kelas pengecualian yang berbeda dan mengembalikan pesan kesalahan yang berbeda
Sebuah contoh menjelaskan
Kode di atas menguji dua kondisi dan melontarkan pengecualian jika salah satu kondisi tidak terpenuhi
- customException() dibuat sebagai perpanjangan dari kelas pengecualian lama. metode ini mewarisi semua metode dan properti dari kelas exception
- Fungsi errorMessage() dibuat. Fungsi ini mengembalikan pesan kesalahan jika alamat email tidak valid
- Variabel $ email disetel ke string yang merupakan alamat email yang valid, tetapi berisi string "contoh"
- Blok "coba" dijalankan dan pengecualian tidak dilontarkan pada kondisi pertama
- Kondisi kedua memicu pengecualian karena email berisi string "contoh"
- Blok "catch" menangkap pengecualian dan menampilkan pesan kesalahan yang benar
Jika pengecualian yang dilontarkan berasal dari kelas customException dan tidak ada tangkapan customException, hanya tangkapan pengecualian kebijakan, pengecualian akan ditangani di sana
Mengembalikan Pengecualian
Kadang-kadang, ketika sebuah pengecualian dilemparkan, Anda mungkin ingin menanganinya secara berbeda dari cara standar. Dimungkinkan untuk membuang pengecualian untuk kedua kalinya dalam blok "catch" .
Skrip harus menyembunyikan kesalahan sistem dari pengguna. Kesalahan sistem mungkin penting bagi pembuat kode, tetapi tidak menarik bagi pengguna. Untuk mempermudah pengguna, Anda dapat kembali melempar pengecualian dengan pesan ramah pengguna