Nota kajian PHP: pengendalian pengecualian dan penyahpepijatan ralat

王林
Lepaskan: 2023-10-09 17:52:02
asal
1295 orang telah melayarinya

Nota kajian PHP: pengendalian pengecualian dan penyahpepijatan ralat

Nota kajian PHP: pengendalian pengecualian dan penyahpepijatan ralat

Dalam proses menulis kod PHP, anda pasti akan menghadapi pelbagai ralat dan pengecualian. Pengendalian pengecualian yang baik dan penyahpepijatan ralat boleh membantu kami mencari masalah dengan lebih baik dan membetulkan pepijat serta meningkatkan kebolehpercayaan dan kestabilan kod. Artikel ini akan memperkenalkan kaedah khusus pengendalian pengecualian dan penyahpepijatan ralat dalam PHP, dan memberikan contoh kod yang berkaitan.

1. Pengendalian pengecualian

  1. Konsep pengecualian

Semasa pelaksanaan program, jika situasi yang tidak dijangka berlaku, seperti kegagalan sambungan pangkalan data, fail tidak wujud, dan lain-lain, PHP akan membuang pengecualian. Pengecualian ialah objek yang mewakili ralat atau keadaan luar biasa semasa pelaksanaan program. Kita boleh menangkap dan mengendalikan pengecualian ini melalui mekanisme pengendalian pengecualian.

  1. pernyataan cuba-tangkap

Dalam blok kod yang mungkin membuang pengecualian, kita boleh menggunakan kenyataan cuba-tangkap untuk menangkap dan mengendalikan pengecualian. Kod dalam blok cuba ialah bahagian kod yang ingin kita pantau, dan kod dalam blok tangkapan ialah logik untuk mengendalikan pengecualian.

try {
    // 可能抛出异常的代码
    // ...
} catch (Exception $e) {
    // 异常处理逻辑
    // ...
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kata kunci try untuk mengelilingi kod yang mungkin membuang pengecualian, dan kata kunci tangkapan diikuti dengan nama kelas pengecualian menunjukkan jenis pengecualian yang ingin kami tangkap. Apabila kod dalam blok cuba melemparkan pengecualian, dan jenis pengecualian adalah konsisten dengan jenis yang ditentukan dalam blok tangkapan, pengecualian akan ditangkap oleh blok tangkapan dan logik pemprosesan yang sepadan akan dilaksanakan.

  1. Berbilang blok tangkapan

Kita boleh menggunakan berbilang blok tangkapan untuk mengendalikan pelbagai jenis pengecualian, dan pengecualian yang ditangkap akan dipadankan dengan jenis pengecualian yang dinyatakan dalam blok tangkapan secara bergilir-gilir.

try {
    // 可能抛出异常的代码
    // ...
} catch (ExceptionType1 $e) {
    // 异常处理逻辑1
    // ...
} catch (ExceptionType2 $e) {
    // 异常处理逻辑2
    // ...
}
Salin selepas log masuk

Susunan berbilang blok tangkapan adalah penting PHP akan sepadan dari atas ke bawah Setelah perlawanan berjaya, logik pemprosesan yang sepadan akan dilaksanakan. Oleh itu, secara amnya, kita perlu meletakkan blok tangkapan jenis pengecualian khusus di hadapan dan blok tangkapan kelas asas di belakang untuk menangkap pengecualian dengan lebih tepat.

  1. akhirnya sekat

Apabila mengendalikan pengecualian, kadangkala kita perlu melaksanakan beberapa logik yang perlu dilaksanakan tanpa mengira sama ada pengecualian berlaku, seperti pelepasan sumber, dsb. Ini boleh dicapai menggunakan blok akhirnya.

try {
    // 可能抛出异常的代码
    // ...
} catch (ExceptionType $e) {
    // 异常处理逻辑
    // ...
} finally {
    // 最终执行的逻辑
    // ...
}
Salin selepas log masuk

Tidak kira sama ada pengecualian berlaku atau tidak, kod dalam blok akhirnya akan dilaksanakan dan biasanya digunakan untuk melakukan beberapa operasi pembersihan.

2. Ralat penyahpepijatan

  1. Pelaporan ralat

Dalam skrip PHP, secara lalai, mesej ralat akan dipaparkan dalam pelayar dalam bentuk amaran atau ralat maut. Tetapi dalam pembangunan sebenar, kami biasanya tidak mahu maklumat ralat didedahkan terus kepada pengguna, tetapi untuk menyimpannya dalam log ralat untuk analisis kemudian.

Kita boleh menggunakan fungsi error_reporting untuk menetapkan tahap pelaporan ralat PHP untuk mengawal paparan maklumat ralat.

error_reporting(E_ALL);   // 显示所有错误信息
error_reporting(E_ERROR); // 只显示致命错误
error_reporting(0);       // 关闭错误报告
Salin selepas log masuk
  1. Output nyahpepijat

Semasa proses pembangunan dan nyahpepijat, kita selalunya perlu mencetak nilai beberapa pembolehubah, hasil pemulangan fungsi, dsb. PHP menyediakan beberapa fungsi penyahpepijatan untuk membantu kami mencapai tujuan ini.

  • var_dump: digunakan untuk mengeluarkan maklumat terperinci pembolehubah.
  • print_r: Digunakan untuk mengeluarkan maklumat yang boleh dibaca manusia tentang pembolehubah.
  • mati/keluar: digunakan untuk menamatkan pelaksanaan program dan mengeluarkan mesej.
$var = 'Hello, World!';
var_dump($var);    // 输出变量的详细信息
print_r($var);     // 输出变量的易读信息
echo $var;         // 正常输出变量的值
echo "Hello";  exit; // 终止程序的执行并输出一条消息
Salin selepas log masuk
  1. Logging

Untuk penyahpepijatan ralat yang lebih baik, kami boleh merekodkan maklumat ralat ke fail log untuk dilihat dan dianalisis.

error_log($message, $message_type, $destination, $extra_headers);
Salin selepas log masuk

Fungsi di atas digunakan untuk menulis mesej ralat ke fail log, di mana $message mewakili kandungan mesej yang akan dirakam, yang boleh menjadi rentetan atau tatasusunan mewakili jenis mesej : 0 mewakili mesej ralat, 1 Menunjukkan mesej amaran, 3 menunjukkan mesej lain $destinasi menunjukkan laluan fail log $extra_headers digunakan untuk menentukan maklumat pengepala tambahan;

4. Ringkasan

Pengendalian pengecualian dan penyahpepijatan adalah aspek yang sangat penting dalam pembangunan PHP. Pengendalian pengecualian yang baik boleh meningkatkan kestabilan dan kebolehpercayaan kod dan mengendalikan pengecualian dengan anggun dan penyahpepijatan yang berkesan boleh membantu kami mencari masalah, membetulkan pepijat dan meningkatkan kecekapan pembangunan. Menguasai kemahiran pengendalian pengecualian dan penyahpepijatan ralat dalam PHP boleh meningkatkan kualiti dan kecekapan menulis kod PHP. Saya harap artikel ini akan membantu pembaca dalam kajian dan amalan mereka.

(Teks di atas dijana oleh pembantu maya berdasarkan soalan dan untuk rujukan sahaja)

Atas ialah kandungan terperinci Nota kajian PHP: pengendalian pengecualian dan penyahpepijatan ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!