Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mekanisme pengendalian pengecualian dan penyelesaian masalah biasa dalam PHP

Mekanisme pengendalian pengecualian dan penyelesaian masalah biasa dalam PHP

WBOY
WBOYasal
2023-06-08 16:04:061442semak imbas

Mekanisme pengendalian pengecualian dan penyelesaian masalah biasa dalam PHP

Dalam pengaturcaraan PHP, anda mungkin menghadapi pelbagai ralat, seperti ralat sintaks, ralat masa jalan dan ralat logik, dsb. Pada masa ini, untuk menyahpepijat dan mengurus kod dengan lebih baik, PHP menyediakan mekanisme pengendalian pengecualian. Artikel ini akan memperkenalkan mekanisme pengendalian pengecualian dalam PHP dan penyelesaian kepada masalah biasa.

1. Mekanisme pengendalian pengecualian

Pengecualian merujuk kepada situasi tidak dijangka yang berlaku semasa program berjalan, seperti fail yang tidak wujud, panggilan fungsi yang gagal, dsb. Apabila pengecualian berlaku dalam program, objek pengecualian boleh dilemparkan dan kemudian dikendalikan dalam pengendali pengecualian yang sepadan. Mekanisme pengendalian pengecualian dalam PHP termasuk empat kata kunci berikut: cuba, tangkap, akhirnya dan buang. Penggunaan asasnya adalah seperti berikut:

cuba {
// Blok kod yang mungkin membuang pengecualian
} tangkapan (Pengecualian $e) {
// Blok kod yang mengendalikan pengecualian
} akhirnya {
// Blok kod yang mesti dilaksanakan
}

Dalam kod di atas, blok kod selepas kata kunci try mungkin membuang pengecualian. Jika pengecualian memang dilemparkan, blok tangkapan yang sepadan akan dipadankan berdasarkan jenis pengecualian. Jika tiada blok tangkapan yang sepadan, pengecualian akan terus dikeluarkan sehingga blok tangkapan yang sepadan ditemui atau program tamat. Kod dalam blok akhirnya akan dilaksanakan tanpa mengira sama ada pengecualian berlaku. Kata kunci lontaran digunakan untuk membuang objek pengecualian secara manual. Berikut ialah contoh mudah:

cuba {
$file = fopen("nonexistentfile.txt", "r");
if (!$file) {

throw new Exception("文件不存在");

}
// Baca kandungan fail
fclose($file);
} tangkapan (Exception $e) {
echo "Exception caught:" ;
} akhirnya {
echo "Kod terakhir yang mesti dilaksanakan";
}

Dalam kod di atas, pernyataan $file = fopen("nonexistentfile.txt", "r") Akan cuba membuka fail yang tidak wujud, menyebabkan objek pengecualian dibuang. Kemudian padankan blok tangkapan yang sepadan dan laksanakan kod dalam blok akhirnya pada masa yang sama Outputnya adalah seperti berikut:

Pengecualian ditangkap: fail tidak wujud
Kod terakhir yang mesti dilaksanakan

2. Menyelesaikan masalah biasa Penyelesaian

    Bagaimana untuk mengendalikan berbilang pengecualian?
Berbilang pengecualian mungkin dilemparkan dalam blok percubaan, yang boleh ditangkap dan dikendalikan secara berasingan. Berikut ialah contoh:

cuba {

// Blok kod yang mungkin membuang berbilang pengecualian
} tangkapan (Exception1 $e) {
// Blok kod yang mengendalikan Exception 1
} tangkapan (Exception2 $e) {
// Blok kod untuk mengendalikan pengecualian 2
} tangkapan (Exception $e) {
// Blok kod untuk mengendalikan pengecualian lain
} akhirnya {
// Blok kod yang mesti dilaksanakan
}

Dalam kod di atas, blok tangkapan yang menangkap pengecualian perlu disusun mengikut tertib daripada khas kepada umum. Iaitu, letakkan dahulu blok tangkapan yang boleh mengendalikan jenis pengecualian tertentu, dan akhirnya letakkan blok tangkapan yang boleh mengendalikan pengecualian lain.

    Bagaimana untuk menyesuaikan jenis pengecualian?
Dalam PHP, anda boleh menyesuaikan jenis pengecualian dengan mewarisi kelas Pengecualian. Contohnya, kod berikut:

kelas MyException memanjangkan Exception {

public function __construct($message="", $code=0, Exception $previous=null) {

parent::__construct($message, $code, $previous);

}

fungsi awam __toString() {

return __CLASS__ . ": [{$this->code}]: {$this->message}

";

}
}

Dalam kod di atas, kelas pengecualian bernama MyException ditakrifkan, yang mewarisi daripada Exception kelas, dan melebihkan fungsi pembina dan __toString() Kemudian objek kelas MyException boleh dibuang dan dikendalikan dalam blok tangkapan >

Apabila pengecualian berlaku dalam program, anda boleh menggunakan fungsi var_dump() atau print_r() untuk mencetak maklumat terperinci objek pengecualian untuk mencari masalah Contohnya:

    cuba {
  1. // Ia mungkin berlaku blok kod yang melemparkan pengecualian
  2. } tangkapan (Exception $e) {
var_dump($e);

}

Dalam kod di atas, apabila atur cara membuang pengecualian, ia akan menjadi output Semua maklumat tentang pengecualian objek, termasuk jenis pengecualian, kod ralat dan mesej ralat, dsb.

Ringkasan

Mekanisme pengendalian pengecualian ialah bahagian penting dalam pengaturcaraan PHP, yang boleh membantu kami Menyahpepijat dan mengurus kod sebenarnya pengekodan, anda perlu memilih jenis pengecualian dan kaedah pengendalian yang sesuai mengikut situasi tertentu, dan menambah pengendali pengecualian yang sepadan pada program Pada masa yang sama, anda perlu memberi perhatian untuk mengurangkan berlakunya pengecualian sebanyak mungkin untuk meningkatkan kestabilan program dan kebolehselenggaraan

Atas ialah kandungan terperinci Mekanisme pengendalian pengecualian dan penyelesaian masalah biasa dalam 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