在之前的文章中給大家?guī)砹恕段宸昼妿憧炊甈HP中的異常處理是什么情況》,其中詳細(xì)介紹了有關(guān)PHP異常處理類的問題,本篇文章我們一起來繼續(xù)看一看PHP錯(cuò)誤處理的相關(guān)知識(shí),PHP的錯(cuò)誤類型和PHP的錯(cuò)誤級(jí)別,希望對(duì)大家有幫助!
程序員再開發(fā)過程中難免有些失誤,或者由其他的原因也會(huì)造成錯(cuò)誤的發(fā)生,那這時(shí)候我們就有必要了解一下PHP中有哪些錯(cuò)誤類型以及有哪些錯(cuò)誤級(jí)別了。大家也可以點(diǎn)擊免費(fèi)的《php錯(cuò)誤處理》教學(xué)視頻來學(xué)習(xí)相關(guān)的知識(shí)。
PHP錯(cuò)誤類型
PHP 程序的錯(cuò)誤發(fā)生一般分為三類,它們分別是語法錯(cuò)誤、執(zhí)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤。
-
語法錯(cuò)誤
語法錯(cuò)誤是在編程中最容易碰到也是最容易解決的一種錯(cuò)誤,例如:遺漏一個(gè)分號(hào)時(shí)就會(huì)顯示錯(cuò)誤信息。這種錯(cuò)誤會(huì)停止程序的執(zhí)行,并顯示出錯(cuò)信息。我們可以根據(jù)錯(cuò)誤信息改正程序,然后重新執(zhí)行。
語法錯(cuò)誤可以說是我們?cè)诰幊踢^程中最容易碰到的一種錯(cuò)誤類型了,同時(shí)我覺得他也是最容易解決的一種錯(cuò)誤;例如:輸入時(shí)忘記輸入了一個(gè)分號(hào)或者函數(shù)語法弄錯(cuò)了。
<?php $a = 1 echo $a; ?>
在上述示例中,第二行最后少了一個(gè)分號(hào),輸出結(jié)果出現(xiàn)錯(cuò)誤。
添加分號(hào)之后程序正常運(yùn)行,輸出結(jié)果為1。由此我們可以看出,當(dāng)語法錯(cuò)誤時(shí),程序會(huì)停止向下繼續(xù)執(zhí)行,當(dāng)語法錯(cuò)誤解決之后,程序才可以繼續(xù)執(zhí)行。
-
運(yùn)行時(shí)錯(cuò)誤
運(yùn)行時(shí)錯(cuò)誤就是再程序運(yùn)行過程中出現(xiàn)了錯(cuò)誤,這時(shí)候需要注意的是,語法并沒有錯(cuò)誤,但是再執(zhí)行的過程中,PHP會(huì)警告你程序有不合理的地方,與語法錯(cuò)誤不同的是,程序會(huì)繼續(xù)向下運(yùn)行。
示例如下:
<?php $a = 1; $b = 0; $c = $a / $b; echo "$a / $b = $c"; ?>
在上述示例中,語法并沒有錯(cuò)誤,但是0不能作為除數(shù),輸出結(jié)果:
-
邏輯錯(cuò)誤
邏輯錯(cuò)誤的程序會(huì)正常的執(zhí)行,但是輸出的結(jié)果卻不對(duì),其根本原因發(fā)生在我們寫的代碼上,程序執(zhí)行過程中沒有報(bào)警信息。示例如下:
<?php $a = 1; $b = 2; if($a = $b){ echo '$a = $b'; }else{ echo '$a != $b'; } ?>
輸出結(jié)果:
由上述示例我們可以看出,輸出結(jié)果明顯不對(duì),不符合邏輯,出現(xiàn)邏輯錯(cuò)誤時(shí),是沒有報(bào)警信息的。這需要我們一定要提高警惕,不要出現(xiàn)邏輯錯(cuò)誤。
拓展知識(shí):PHP錯(cuò)誤級(jí)別
PHP中既有錯(cuò)誤類型,也定義了錯(cuò)誤級(jí)別,可以在php.ini中定義錯(cuò)誤級(jí)別。(點(diǎn)擊《PHP如何上傳文件?看完就明白了!》查看如何找到php.ini)
PHP中的錯(cuò)誤類型如下所示:
1 —E_ERROR
—致命的運(yùn)行時(shí)錯(cuò)誤,一般是不可恢復(fù)的情況,例如內(nèi)存分配導(dǎo)致的問題,后果是導(dǎo)致腳本終止、不再繼續(xù)運(yùn)行。
2 — E_WARNING
— 運(yùn)行時(shí)警告(非致命錯(cuò)誤),僅給出提示信息,但是腳本不會(huì)終止運(yùn)行。
4 — E_PARSE
— 編譯時(shí)語法解析錯(cuò)誤,僅由分析器產(chǎn)生。
8 — E_NOTICE
—運(yùn)行時(shí)通知,表示腳本遇到可能會(huì)表現(xiàn)為錯(cuò)誤的情況,但是在可以正常運(yùn)行的腳本里面也可能會(huì)有類似的通知。
16 — E_CORE_ERROR
— 在 PHP 初始化啟動(dòng)過程中發(fā)生的致命錯(cuò)誤,類似 E_ERROR,但是是由 PHP 引擎核心產(chǎn)生的。
64 — E_COMPILE_ERROR
— 致命編譯時(shí)錯(cuò)誤,類似 E_ERROR,但是是由 Zend 腳本引擎產(chǎn)生的。
128 — E_COMPILE_WARNING
— 編譯時(shí)警告(非致命錯(cuò)誤),類似 E_WARNING,但是是由 Zend 腳本引擎產(chǎn)生的。 。
1024 — E_STRICT
— 啟用 PHP 對(duì)代碼的修改建議,以確保代碼具有最佳的互操作性和向前兼容性。
8192 — E_DEPRECATED
— 運(yùn)行時(shí)通知,啟用后將會(huì)對(duì)在未來版本中可能無法正常工作的代碼給出警告。
16384 — E_USER_DEPRECATED
— 用戶產(chǎn)生的警告信息,類似 E_DEPRECATED,但是是由用戶自己在代碼中使用 PHP 函數(shù) trigger_error() 來產(chǎn)生的。
30719 — E_ALL
— E_STRICT 除外的所有錯(cuò)誤和警告信息。
想要了解