php錯誤等級種類:1、解析錯誤或語法錯誤,這種錯誤會停止程式的執行,並顯示出錯訊息;2、致命錯誤;3、警告錯誤,是指程式的語法沒有錯誤,但在執行的過程中,發現程式有些不合理的地方,從而提示出警告訊息,而程式會繼續向下執行;4、注意錯誤,類似於警告錯誤,這意味著程式包含錯誤,但它允許執行腳本;5、最低等級的錯誤(不建議,不建議),使用一些過期函數的時候會出現,程式繼續執行。
本教學操作環境:windows7系統、PHP8版、DELL G3電腦
PHP錯誤等級
Parse error > Fatal Error > Waning > Notice > Deprecated
語法錯誤是在程式設計中最容易碰到也是最容易解決的一種錯誤,例如:遺漏一個分號時就會顯示錯誤訊息。這種錯誤會停止程式的執行,並顯示出錯訊息。我們可以根據錯誤訊息改正程序,然後重新執行。
【範例】下面透過簡單的程式碼示範常見語法錯誤以及相關的錯誤訊息。
<?php $a = 1; $b = 2; $c = $a + $b echo ; ?>
上面程式碼中第4 行末尾省略了;,所以運行上面的程式碼會顯示如下錯誤訊息:
Parse error: syntax error, unexpected 'echo' (T_ECHO) in D:\WWW\index.php on line 5
從上面的範例和運行結果可以看出,語法錯誤會阻止程式繼續向下執行。只有解決了這些錯誤後程式才可以順利執行。
這是PHP編譯器理解PHP程式碼但它識別未聲明的函數的錯誤類型。這意味著在沒有函數定義的情況下呼叫函數。
程式直接報錯,需要修改程式碼! ! !中斷程式執行,可使用register_shutdown_function()函數在程式終止前觸發一個函數
#例如
<?php function add($x, $y) { $sum = $x + $y; echo "sum = " . $sum; } $x = 0; $y = 20; add($x, $y); diff($x, $y); ?>
說明:在第10行中,呼叫了函數diff(),但函數diff()沒有的宣告定義,所以它給了錯誤。
程式的語法沒有錯誤,但是在執行的過程中,PHP 會發現程式有些不合理的地方,從而提示出警告訊息,但程式會繼續向下執行。
範例:把 0 作為除數時,會造成程式運行錯誤並輸出錯誤訊息。
<?php $a = 1; $b = 0; $c = $a / $b; echo "$a / $b = $c"; ?>
錯誤:
它類似於警告錯誤,這表示程式包含錯誤,但它允許執行腳本。在使用一些未定義變數、常數或陣列key沒有加引號的時候會出現,程式繼續執行
<?php header("content-type:text/html;charset=utf-8"); $x = "PHP中文网"; echo $x; echo $y; ?>
說明:此程式使用未宣告的變數$y,因此它給出了錯誤訊息。
5、 最低層級的錯誤(Deprecated,不推薦,不建議)
使用一些過期函數的時候會出現,程式繼續執行。
#1.修改PHP的設定檔php.ini
error_reporting = E_ALL&~E_NOTICE; //设置错误报告级别 display_errors = 1; //开发环境开启,生产环境关闭
2. 使用error_reporting()函數
這種方式設定後,可以立即生效。但僅限於在目前腳本中的error_reporting()函數呼叫的後面區域。
int error_reporting ([ int $level ] )1.
參數可以是整數或對應的常數標識符,建議使用常數的形式。傳回值為目前位置處起作用的錯誤報告等級的值(整數值)。
注意:設定檔php.ini中display_errors的預設值為On,代表顯示錯誤提示,如果設定為Off,就會關閉所有的錯誤提示。
使用 error_reporting(0) 或在函數前面加 @
,可以抑制錯誤輸出,以防止錯誤訊息洩漏敏感資訊。
參數level
新的 error_reporting 等級。可以是一個位元遮罩也可以是一個已命名的常數。
建議使用已命名的常數,以確保相容於未來的版本。由於錯誤等級的新增、整數取值範圍的增加,
較長的基於整數的錯誤等級不會總是和預期的表現一致。
level 可能的值(php中的報錯等級)
常見:總共大概15個
15个正好对应二进制的15位。
需要注意的是, 上述表中的字段, 不是一成不变的, 不同的PHP版本, 值可能会不同
任意数目的以上选项都可以用“或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。
例如,下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别:
例:
<?php error_reporting(0); //禁用错误报告 error_reporting(E_ERROR | E_WARNING | E_PARSE);//报告运行时错误 error_reporting(E_ALL); //报告所有错误 error_reporting(E_ALL ^ E_NOTICE); //除E_NOTICE报告所有错误,是在php.ini的默认设置 error_reporting(-1); //报告所有 PHP 错误 error_reporting(3); //不报E_NOTICE error_reporting(11); //报告所有错误 ini_set('error_reporting', E_ALL); // 和 error_reporting(E_ALL); 一样 error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);//表示php错误,警告,语法错误,提醒都返错。 ?>
PHP的异常是PHP5的新增特性,与JAVA/C#的异常不同,PHP异常需要手动抛出throw new Exception,而不是系统自动抛出。
PHP错误与异常的区别,他们是2个不同的概念,但有共同的地方:
如果异常不捕获处理,程序将会终止,并报出Fatal Error 错误,看到这里大家就会觉得异常是不是错误的一种,这是一种错觉,但这样理解也可以。但异常捕获后程序可以继续执行,而真正的Fatal Error错误出现后程序就必须终止。
异常可以使用 try{}catch(){}
来捕获捕获,捕获之后后续代码可以继续执行;而错误是无法使用 try{}catch(){} 捕获的。
如果抛出了异常,就必须捕获它,否则程序终止执行。
推荐学习:《PHP视频教程》
以上是php 錯誤等級種類有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!