cari
Rumahpembangunan bahagian belakangtutorial phpPetua Pantas: Cara Mengendalikan Pengecualian di PHP

Petua Pantas: Cara Mengendalikan Pengecualian di PHP

Takeaways Key

    Kelas pengecualian PHP menyediakan kaedah untuk mendapatkan maklumat mengenai pengecualian, seperti nombor fail dan baris di mana ia berlaku, dan mesej yang menggambarkan ralat. Sekiranya pengecualian tidak ditangkap, ia akan dikendalikan oleh pengendali pengecualian lalai, biasanya mengakibatkan kesilapan dan penamatan skrip.
  • Sintaks asas untuk mengendalikan pengecualian di PHP ialah blok percubaan. Blok percubaan mengandungi kod yang boleh membuang pengecualian, dan blok tangkapan mengandungi kod yang akan mengendalikan pengecualian. Sekiranya pengecualian dilemparkan ke dalam blok percubaan, skrip akan melompat ke blok tangkapan yang sepadan, membolehkan skrip mengendalikan pengecualian dan terus melaksanakan jika dikehendaki.
  • Adalah mungkin untuk membuat kelas pengecualian tersuai dengan memperluaskan kelas pengecualian terbina dalam. Ini membolehkan pengendalian jenis pengecualian tertentu dalam cara yang lebih disesuaikan dan teratur. Dengan membuat kelas pengecualian tersuai, kita dapat menangkap jenis pengecualian tertentu dan mengendalikannya secara berbeza, bergantung kepada masalah tertentu yang berlaku.
Dalam artikel ini, kami akan membincangkan asas -asas pengecualian dalam PHP dan cara menggunakannya dengan berkesan.

Setiap pengaturcara perlu menangani kesilapan dan situasi yang tidak dijangka setiap hari. Salah satu cara untuk melakukan itu adalah dengan menggunakan pengecualian. Dengan pengecualian, kita boleh menulis kod yang lebih kuat dan kurang terdedah kepada pepijat. Contoh kesilapan yang mungkin menyebabkan pengecualian termasuk cuba membuka fail yang tidak wujud pada sistem fail, atau cuba membahagikan nombor dengan sifar.

Apa pengecualian?

Pengecualian adalah peristiwa yang tidak diingini atau tidak dijangka yang berlaku semasa pelaksanaan program. Ia mengganggu aliran normal arahan dan boleh disebabkan oleh pelbagai kesilapan. Dalam PHP, pengecualian diwakili oleh pengecualian kelas.

Kelas pengecualian dalam PHP adalah kelas asas untuk semua pengecualian dalam bahasa. Ia menyediakan kaedah untuk mendapatkan maklumat mengenai pengecualian, seperti fail dan nombor baris di mana ia berlaku, dan mesej yang menggambarkan ralat.

Apabila pengecualian dilemparkan, ia boleh ditangkap oleh blok kod dengan arahan yang betul untuk mengendalikannya. Sekiranya pengecualian tidak ditangkap, ia akan dikendalikan oleh pengendali pengecualian lalai, yang biasanya mengakibatkan kesilapan maut dan penamatan skrip.

Penggunaan Asas

Sintaks asas untuk mengendalikan pengecualian di PHP ialah blok percubaan. Blok percubaan mengandungi kod yang boleh membuang pengecualian, dan blok tangkapan mengandungi kod yang akan mengendalikan pengecualian. Jika pengecualian dibuang ke dalam blok cuba, skrip akan melompat ke blok tangkapan yang sepadan. Berikut adalah contoh:

<span>try {
</span>    <span>// code that may throw an exception
</span>    <span>$file = fopen('nonexistent.txt', 'r');
</span><span>} catch (Exception $e) {
</span>    <span>// code to handle the exception
</span>    <span>echo 'An error occurred: ' . $e->getMessage();
</span><span>}
</span>

Dalam contoh ini, kod di dalam percubaan cuba cuba membuka fail yang tidak wujud. Ini melemparkan pengecualian, yang ditangkap oleh blok tangkapan. Blok tangkapan kemudian mencetak mesej ralat. Jika kita tidak menggunakan blok percubaan dalam contoh ini dan pengecualian dilemparkan, skrip akan ditamatkan dan mesej ralat akan dipaparkan. Ini akan mengakibatkan skrip tidak dapat meneruskan pelaksanaan. Menggunakan blok cubaan cuba membolehkan skrip mengendalikan pengecualian dengan anggun dan terus melaksanakan jika dikehendaki.

Kata kunci lemparan

Untuk membuang pengecualian, kita boleh menggunakan kata kunci lemparan. Kata kunci lemparan digunakan di dalam blok cuba untuk membuang pengecualian apabila keadaan tertentu dipenuhi. Pengecualian boleh menjadi pengecualian jenis, atau kelas pengecualian tersuai yang kami buat. Berikut adalah contoh:

<span>function divide($a, $b) {
</span>    <span>if ($b == 0) {
</span>        <span>throw new Exception('Cannot divide by zero');
</span>    <span>}
</span>    <span>return $a / $b;
</span><span>}
</span>
<span>try {
</span>    <span>echo divide(5, 0);
</span><span>} catch (Exception $e) {
</span>    <span>echo 'An error occurred: ' . $e->getMessage();
</span><span>}
</span>

Dalam contoh ini, fungsi Divide dijangka mengambil dua parameter, $ A dan $ B, dan mengembalikan hasil membahagikan $ A sebanyak $ B. Walau bagaimanapun, jika parameter kedua adalah sifar, pengecualian dilemparkan.

Membuat pengecualian tersuai

Ia juga mungkin untuk membuat kelas pengecualian tersuai dengan memperluaskan kelas pengecualian terbina dalam. Mewujudkan kelas pengecualian tersuai membolehkan kami mengendalikan jenis pengecualian tertentu dengan cara yang lebih disesuaikan dan teratur. Dengan memperluaskan kelas pengecualian terbina dalam, kita boleh membuat kelas pengecualian kita sendiri yang mewarisi semua sifat dan kaedah kelas pengecualian, tetapi juga membolehkan kita menambah sifat dan kaedah kita sendiri yang khusus untuk jenis pengecualian kita cuba mengendalikan. Ini membolehkan kita mempunyai lebih banyak kawalan ke atas bagaimana pengecualian kita dikendalikan, dan boleh menjadikan kod kita lebih mudah dibaca dan dikekalkan.

Selain itu, dengan membuat kelas pengecualian tersuai, kita dapat menangkap jenis pengecualian tertentu dan mengendalikannya secara berbeza, bergantung kepada masalah tertentu yang berlaku. Untuk membuat kelas pengecualian tersuai, kita boleh menentukan kelas baru dan memperluaskan pengecualian seperti ini:

<span>class DivideByZeroException extends Exception {}
</span>

Kemudian, kemudian, kita boleh menggunakan kelas ini sebagai jenis pengecualian membuang:

<span>function divide($a, $b) {
</span>    <span>if ($b == 0) {
</span>        <span>throw new DivideByZeroException('Cannot divide by zero');
</span>    <span>}
</span>    <span>return $a / $b;
</span><span>}
</span>
<span>try {
</span>    <span>echo divide(5, 0);
</span><span>} catch (DivideByZeroException $e) {
</span>    <span>echo 'An error occurred: ' . $e->getMessage();
</span><span>}
</span>

Berikut adalah contoh bagaimana kita boleh menambah kaedah CustomErrormessage () ke kelas pengecualian tersuai:

<span>class DivideByZeroException extends Exception {
</span>    <span>public function customErrorMessage() {
</span>        <span>$message = "Error on line " . $this->getLine() . " in file " . $this->getFile() . ": " . $this->getMessage();
</span>        <span>return $message;
</span>    <span>}
</span><span>}
</span>

Dalam contoh ini, kami telah menambahkan satu kaedah yang dipanggil CustomErrormessage ke kelas DivebyZeroException. Kaedah ini menggunakan kaedah getLine (), getFile (), dan getMessage () kelas pengecualian untuk membina mesej ralat tersuai.

kita boleh menggunakan kaedah tersuai ini di blok tangkapan seperti ini:

<span>try {
</span>    <span>// code that may throw an exception
</span>    <span>$file = fopen('nonexistent.txt', 'r');
</span><span>} catch (Exception $e) {
</span>    <span>// code to handle the exception
</span>    <span>echo 'An error occurred: ' . $e->getMessage();
</span><span>}
</span>

kaedah getLine () mengembalikan nombor baris di mana pengecualian dilemparkan dan kaedah getFile () mengembalikan nama fail di mana pengecualian dilemparkan, yang membolehkan kita mempunyai mesej ralat yang lebih bermaklumat. Dengan kaedah CustomErrormessage ini, output akan menjadi seperti "ralat on line (nombor baris) dalam fail (nama fail): tidak boleh membahagikan sifar", dan ia akan memberikan maklumat yang lebih terperinci sekiranya kita perlu debug pengecualian.

Dengan cara ini, kita boleh menambah fungsi tersuai, atau membuang pelbagai jenis pengecualian untuk dikendalikan dengan cara yang berbeza.

Kesimpulan

Pengecualian adalah alat yang berkuasa untuk menangani kesilapan dan situasi yang tidak dijangka dalam PHP. Mereka membolehkan kami memisahkan aliran normal pelaksanaan kod dari pengendalian ralat, menjadikan kod kami lebih mantap dan kurang terdedah kepada pepijat. Dengan menggunakan pengecualian dalam bentuk lemparan, cuba dan tangkap kata kunci, dan memanfaatkan kuasa pengecualian tersuai dalam kod kami, kami boleh menjadikannya lebih mantap, boleh dibaca, dan dikekalkan.

Soalan Lazim (Soalan Lazim) Mengenai Pengendalian Pengecualian PHP

Apakah perbezaan antara kesilapan dan pengecualian dalam php?

Dalam PHP, kedua -dua kesilapan dan pengecualian digunakan untuk mengendalikan pelbagai jenis situasi yang bermasalah dalam program. Kesalahan adalah masalah serius yang menghalang program daripada terus berjalan. Ia biasanya disebabkan oleh isu kod atau masalah sistem. Sebaliknya, pengecualian adalah keadaan yang mengubah aliran normal pelaksanaan program. Ia biasanya digunakan untuk mengendalikan situasi yang diharapkan tetapi berpotensi bermasalah, seperti input tidak sah atau fail yang tidak dijumpai. Tidak seperti kesilapan, pengecualian boleh ditangkap dan dikendalikan dalam program menggunakan blok percubaan. Memperluaskan kelas pengecualian terbina dalam. Anda boleh menambah sifat dan kaedah tersuai ke kelas pengecualian anda untuk memberikan maklumat yang lebih spesifik mengenai keadaan yang luar biasa. Berikut adalah contoh:

kelas myException memanjangkan pengecualian { // sifat dan kaedah adat

}


anda kemudian boleh membuang dan menangkap pengecualian tersuai anda seperti pengecualian standard.

Bagaimana saya boleh mengendalikan pelbagai pengecualian dalam php?

Dalam php, anda boleh mengendalikan pelbagai pengecualian dengan menggunakan pelbagai blok tangkapan. Setiap blok tangkapan mengendalikan jenis pengecualian tertentu. Apabila pengecualian dilemparkan, blok tangkapan diperiksa dengan teratur, dan yang pertama yang dapat mengendalikan pengecualian yang dibuang dilaksanakan. Berikut adalah contoh:

cubalah {

// kod yang boleh membuang pengecualian

} tangkapan (myException $ e) { // handle myException

} tangkapan (pengecualian $ e ) { // Mengendalikan pengecualian lain
}

Apakah tujuan blok akhirnya dalam pengendalian pengecualian PHP?

Akhirnya blok dalam pengendalian pengecualian PHP digunakan untuk menentukan kod yang harus dilaksanakan tanpa mengira sama ada pengecualian dilemparkan atau tidak. Ini berguna untuk kod pembersihan yang harus selalu dijalankan, seperti menutup fail atau sambungan pangkalan data. Blok Akhirnya adalah pilihan dan ditambah selepas blok tangkapan.

Bagaimana saya boleh mengutuk pengecualian dalam php? blok. Ini berguna apabila anda ingin mengendalikan pengecualian sebahagiannya dan biarkan ia menyebarkan ke tahap yang lebih tinggi untuk pengendalian selanjutnya. Berikut adalah contoh:

cubalah {
// kod yang boleh membuang pengecualian
} tangkapan (pengecualian $ e) { // sebahagiannya mengendalikan pengecualian
lemparkan $ e ; / mesej pengecualian. Kaedah ini ditakrifkan dalam kelas pengecualian dan boleh dipanggil pada mana -mana objek kelas yang memanjangkan pengecualian. Mesej pengecualian biasanya ditetapkan apabila pengecualian dilemparkan, seperti ini: Buang pengecualian baru ("Mesej ralat").

Bagaimana saya dapat menangkap semua pengecualian dalam php? Boleh menangkap semua pengecualian dengan menggunakan blok tangkapan dengan kelas pengecualian. Ini akan menangkap apa -apa pengecualian yang merupakan contoh kelas pengecualian atau subkelasnya. Berikut adalah contoh:

cubalah {

// kod yang boleh membuang pengecualian

} tangkapan (pengecualian $ e) {

// mengendalikan semua pengecualian

}

Apakah penggunaan kaedah gettraceasstring dalam pengendalian pengecualian PHP? Jejak timbunan adalah senarai panggilan fungsi yang sedang berjalan apabila pengecualian dilemparkan. Ini berguna untuk debugging, kerana ia menunjukkan urutan fungsi panggilan yang membawa kepada pengecualian. Pengecualian tanpa menangkapnya dalam PHP. Walau bagaimanapun, jika pengecualian dilemparkan dan tidak ditangkap, ia akan mengakibatkan kesilapan maut dan program akan ditamatkan. Oleh itu, ia secara amnya adalah amalan yang baik untuk sentiasa menangkap apa -apa pengecualian yang anda buang. Fungsi Pengendali Pengecualian dengan fungsi set_exception_handler. Fungsi ini akan dipanggil apabila pengecualian dibuang dan tidak ditangkap. Berikut adalah contoh:

fungsi myExceptionHandler ($ exception) { // Mengendalikan pengecualian
}

set_exception_handler ('myExceptionHandler');

Atas ialah kandungan terperinci Petua Pantas: Cara Mengendalikan Pengecualian di PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Terangkan bagaimana pengimbangan beban mempengaruhi pengurusan sesi dan bagaimana mengatasinya.Terangkan bagaimana pengimbangan beban mempengaruhi pengurusan sesi dan bagaimana mengatasinya.Apr 29, 2025 am 12:42 AM

Beban mengimbangi mempengaruhi pengurusan sesi, tetapi dapat diselesaikan dengan replikasi sesi, ketegangan sesi, dan penyimpanan sesi berpusat. 1. Sesi Replikasi Salinan Data Sesi Antara Pelayan. 2. Sesi Stickiness mengarahkan permintaan pengguna ke pelayan yang sama. 3. Penyimpanan Sesi Pusat menggunakan pelayan bebas seperti Redis untuk menyimpan data sesi untuk memastikan perkongsian data.

Terangkan konsep penguncian sesi.Terangkan konsep penguncian sesi.Apr 29, 2025 am 12:39 AM

Sessionlockingisatechniqueusedtoensureauserererersessionremainsexclusivetooneuseratatime.IScrucialFreventingDataCorruptionSandsecuritybreachesinmulti-userapplications.SessionLockingISimplementedusingserverververveChan

Adakah terdapat alternatif untuk sesi PHP?Adakah terdapat alternatif untuk sesi PHP?Apr 29, 2025 am 12:36 AM

Alternatif untuk sesi PHP termasuk kuki, pengesahan berasaskan token, sesi berasaskan pangkalan data, dan redis/memcached. 1.Cookies Menguruskan sesi dengan menyimpan data pada klien, yang mudah tetapi rendah dalam keselamatan. 2. Pengesahan berasaskan token menggunakan token untuk mengesahkan pengguna, yang sangat selamat tetapi memerlukan logik tambahan. 3.Database-berasaskan data menyimpan data dalam pangkalan data, yang mempunyai skalabilitas yang baik tetapi boleh menjejaskan prestasi. 4. Redis/Memcached menggunakan cache yang diedarkan untuk meningkatkan prestasi dan skalabiliti, tetapi memerlukan pemadanan tambahan

Tentukan istilah 'sesi rampasan' dalam konteks PHP.Tentukan istilah 'sesi rampasan' dalam konteks PHP.Apr 29, 2025 am 12:33 AM

SessionHijacking merujuk kepada penyerang yang menyamar sebagai pengguna dengan mendapatkan sessionId pengguna. Kaedah pencegahan termasuk: 1) menyulitkan komunikasi menggunakan HTTPS; 2) mengesahkan sumber sessionId; 3) menggunakan algoritma generasi sesi yang selamat; 4) Secara kerap mengemas kini sessionId.

Apakah bentuk penuh PHP?Apakah bentuk penuh PHP?Apr 28, 2025 pm 04:58 PM

Artikel ini membincangkan PHP, memperincikan bentuk penuhnya, kegunaan utama dalam pembangunan web, perbandingan dengan Python dan Java, dan kemudahan pembelajarannya untuk pemula.

Bagaimanakah PHP mengendalikan data borang?Bagaimanakah PHP mengendalikan data borang?Apr 28, 2025 pm 04:57 PM

PHP mengendalikan data borang menggunakan $ \ _ post dan $ \ _ mendapatkan superglobals, dengan keselamatan memastikan melalui pengesahan, sanitisasi, dan interaksi pangkalan data yang selamat.

Apakah perbezaan antara PHP dan ASP.NET?Apakah perbezaan antara PHP dan ASP.NET?Apr 28, 2025 pm 04:56 PM

Artikel ini membandingkan PHP dan ASP.NET, memberi tumpuan kepada kesesuaian mereka untuk aplikasi web berskala besar, perbezaan prestasi, dan ciri keselamatan. Kedua-duanya berdaya maju untuk projek besar, tetapi PHP adalah sumber terbuka dan bebas platform, sementara ASP.NET,

Adakah PHP adalah bahasa sensitif kes?Adakah PHP adalah bahasa sensitif kes?Apr 28, 2025 pm 04:55 PM

Kepekaan kes PHP berbeza -beza: Fungsi tidak sensitif, manakala pembolehubah dan kelas sensitif. Amalan terbaik termasuk penamaan yang konsisten dan menggunakan fungsi kes-insensitif untuk perbandingan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.