Rumah > Artikel > pembangunan bahagian belakang > Apakah jenis ralat biasa dalam php
Jenis ralat biasa dalam PHP ialah: 1. Jenis ralat parse, menunjukkan ralat penghuraian atau ralat sintaks 2. Jenis ralat fatal, menunjukkan ralat maut; 4. Jenis notis; perhatian kepada ralat; 5. Jenis yang tidak digunakan, menunjukkan ralat tahap terendah.
Sistem pengendalian untuk tutorial ini: Sistem Windows 10, PHP versi 8.1, komputer Dell G3.
1. Jenis ralat PHP
Tahap ralat PHP
Ralat Penghuraian >
1. Ralat penghuraian atau ralat sintaks (Ralat penghuraian)
Ralat sintaks ialah ralat yang paling biasa dalam pengaturcaraan dan paling mudah untuk diselesaikan, seperti kehilangan titik Mesej ralat akan dipaparkan apabila nombor dicapai. Ralat ini menghentikan pelaksanaan program dan memaparkan mesej ralat. Kami boleh membetulkan atur cara berdasarkan mesej ralat dan melaksanakannya semula. 【Contoh】Yang berikut menunjukkan ralat sintaks biasa dan mesej ralat yang berkaitan melalui kod ringkas.<?php $a = 1; $b = 2; $c = $a + $b echo ; ?>; ditinggalkan pada penghujung baris 4 dalam kod di atas, jadi menjalankan kod di atas akan memaparkan mesej ralat berikut:
Parse error: syntax error, unexpected 'echo' (T_ECHO) in D:\WWW\index.php on line 5Seperti yang dapat dilihat dari contoh di atas dan menjalankan hasil , ralat sintaks akan menghalang program daripada terus dilaksanakan. Hanya selepas ralat ini diselesaikan, program boleh dilaksanakan dengan lancar.
2. Ralat maut:
Ini ialah jenis ralat di mana pengkompil PHP memahami kod PHP tetapi ia mengenal pasti fungsi yang tidak diisytiharkan. Ini bermakna memanggil fungsi tanpa definisi fungsi. Atur cara melaporkan ralat secara langsung dan kod perlu diubah suai! ! ! Untuk mengganggu pelaksanaan program, anda boleh menggunakan fungsi register_shutdown_function() untuk mencetuskan fungsi sebelum atur cara ditamatkan, seperti<?php function add($x, $y) { $sum = $x + $y; echo "sum = " . $sum; } $x = 0; $y = 20; add($x, $y); diff($x, $y); ?>Penjelasan: Dalam baris 10, fungsi diff( ), tetapi fungsi diff() tidak ditakrifkan, jadi ia memberikan ralat.
3 Amaran:
Tiada ralat sintaks dalam atur cara, tetapi semasa pelaksanaan, PHP akan menemui beberapa aspek program yang tidak munasabah, oleh itu Mesej amaran akan muncul, tetapi program akan terus dilaksanakan. Contoh: Menggunakan 0 sebagai pembahagi akan menyebabkan atur cara berjalan dengan tidak betul dan mengeluarkan mesej ralat.<?php $a = 1; $b = 0; $c = $a / $b; echo "$a / $b = $c"; ?>Ralat:
4. Notis:
Ia serupa dengan Ralat amaran, yang bermaksud bahawa program mengandungi ralat, tetapi ia membenarkan pelaksanaan skrip. Ia akan berlaku apabila menggunakan beberapa pembolehubah yang tidak ditentukan, pemalar atau kekunci tatasusunan tanpa petikan dan program terus melaksanakan<?php header("content-type:text/html;charset=utf-8"); $x = "PHP中文网"; echo $x; echo $y; ?>Penjelasan: Program ini menggunakan pembolehubah tidak diisytiharkan $y, jadi ia memberikan mesej ralat .
5. Ralat tahap terendah (Ditamatkan, tidak disyorkan, tidak disyorkan)
Akan berlaku apabila menggunakan beberapa fungsi yang telah tamat tempoh dan program akan terus dilaksanakan.2. PHP konfigurasi salah
Selain menetapkannya dalam skrip, anda juga boleh mengkonfigurasinya dalam fail konfigurasi php.inierror_reporting = E_ALL&~E_NOTICE; //设置错误报告级别 display_errors = 1; //开发环境开启,生产环境关闭
3. Pengecualian PHP
Pengecualian PHP ialah ciri baharu PHP5 Berbeza daripada pengecualian JAVA/C#, pengecualian PHP perlu dibuang secara manual dengan membuang Pengecualian baharu dan bukannya dilemparkan. secara automatik oleh sistem. Perbezaan antara ralat PHP dan pengecualian Ia adalah dua konsep yang berbeza, tetapi ia mempunyai persamaan: Jika pengecualian tidak ditangkap dan dikendalikan, program akan menamatkan dan melaporkan Fatal. Ralat, apabila anda melihat ini, semua orang akan tertanya-tanya sama ada anomali ini adalah ilusi, tetapi ia boleh difahami dengan cara ini. Walau bagaimanapun, program boleh terus dilaksanakan selepas pengecualian ditangkap, tetapi program mesti ditamatkan selepas Ralat Fatal sebenar berlaku. Pengecualian boleh ditangkap menggunakan, dan kod seterusnya boleh terus dilaksanakan selepas ralat tidak boleh ditangkap menggunakan try{}catch(){}
. try{}catch(){}
4. Pengecualian dan ralat PHP dilemparkan
Balingan pengecualian:throw new Exception(‘Some Error Message’);
trigger_error();
Ralat yang dicetuskan tidak akan ditangkap oleh kenyataan tangkapan pengecualian cuba-tangkaptrigger_error()
5 Pengendalian ralat PHP
set_error_handler()hanya boleh mengendalikan Dihentikan, Terdapat tiga peringkat. ralat: Notis dan Pusing, dan selepas pemprosesan, skrip akan terus melaksanakan baris seterusnya di mana ralat berlaku.
register_shutdown_function()Kaedah ini ialah fungsi panggil balik terakhir sebelum penghujung skrip, jadi sama ada ia die()/error (exception)/atau skrip berakhir seperti biasa, ia akan dipanggil
6. Pengendalian pengecualian PHP
set_exception_handler()Tetapkan pengendali pengecualian lalai Jika terdapat tangkapan cuba/tangkap, fungsi ini tidak akan dilaksanakan, jika tidak, ia akan dilaksanakan. dan jika dilaksanakan, skrip tidak akan terus dilaksanakan Dalam baris terakhir kod di mana pengecualian berlaku, program akan ditamatkan serta-merta
Notaset_exception_handler()
set_exception_handler(“myException”)
不仅可以接受函数名,还可以接受类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”,如下代码所示:
<?php class App{ function myException($exception) { echo "<b>Exception:</b> " , $exception->getMessage(); } } set_exception_handler(array('App','myException')); throw new Exception('Uncaught Exception occurred'); ?>
七、PHP7 异常处理的大变化
在PHP7之前,Deprecated、Notice、Waning这类错误是可以捕获的(使用set_error_handler()
函数),而Fatel Error无法捕获的。
在PHP7之后,出现了一个异常与错误通用的接口Throwable,Exception类与Error类都实现了该接口,导致Error类或Error类的派生类的错误对象(大部分Fatel Error,而之前三类错误不变)也可以像Exception一样被捕获(2种捕获方法:1、try/catch 2、set_exception_handler())。
Atas ialah kandungan terperinci Apakah jenis ralat biasa dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!