您好,登錄后才能下訂單哦!
本篇內容介紹了“php錯誤級別種類實例代碼分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
php錯誤級別種類:1、解析錯誤或語法錯誤,這種錯誤會停止程序的執行,并顯示出錯信息;2、致命錯誤;3、警告錯誤,是指程序的語法沒有錯誤,但在執行的過程中,發現程序有些不合理的地方,從而提示出警告信息,而程序會繼續向下執行;4、注意錯誤,類似于警告錯誤,這意味著該程序包含錯誤,但它允許執行腳本;5、最低級別的錯誤(不推薦,不建議),使用一些過期函數的時候會出現,程序繼續執行。
PHP錯誤級別
Parse error > Fatal Error > Waning > Notice > Deprecated
1、解析錯誤或語法錯誤(Parse error)
語法錯誤是在編程中最容易碰到也是最容易解決的一種錯誤,例如:遺漏一個分號時就會顯示錯誤信息。這種錯誤會停止程序的執行,并顯示出錯信息。我們可以根據錯誤信息改正程序,然后重新執行。
【示例】下面通過簡單的代碼演示常見語法錯誤以及相關的錯誤信息。
<?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
從上面的示例和運行結果可以看出,語法錯誤會阻止程序繼續向下執行。只有解決了這些錯誤后程序才可以順利執行。
2、致命錯誤(Fatal error):
這是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()沒有的聲明定義,所以它給出了錯誤。
3、警告錯誤(Warning):
程序的語法沒有錯誤,但是在執行的過程中,PHP 會發現程序有些不合理的地方,從而提示出警告信息,但程序會繼續向下執行。
示例:把 0 作為除數時,會造成程序運行錯誤并輸出錯誤信息。
<?php
$a = 1;
$b = 0;
$c = $a / $b;
echo "$a / $b = $c";
?>
錯誤:
4、注意錯誤(Notice):
它類似于警告錯誤,這意味著該程序包含錯誤,但它允許執行腳本。在使用一些未定義變量、常量或者數組key沒有加引號的時候會出現,程序繼續執行
<?php
header("content-type:text/html;charset=utf-8");
$x = "億速云";
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錯誤級別種類實例代碼分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。