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 錯誤級別種類有哪些的詳細內容,更多請關注TW511.COM其它相關文章!