首頁 > 後端開發 > PHP問題 > php 錯誤等級種類有哪些

php 錯誤等級種類有哪些

青灯夜游
發布: 2023-03-17 21:08:02
原創
3386 人瀏覽過

php錯誤等級種類:1、解析錯誤或語法錯誤,這種錯誤會停止程式的執行,並顯示出錯訊息;2、致命錯誤;3、警告錯誤,是指程式的語法沒有錯誤,但在執行的過程中,發現程式有些不合理的地方,從而提示出警告訊息,而程式會繼續向下執行;4、注意錯誤,類似於警告錯誤,這意味著程式包含錯誤,但它允許執行腳本;5、最低等級的錯誤(不建議,不建議),使用一些過期函數的時候會出現,程式繼續執行。

php 錯誤等級種類有哪些

本教學操作環境:windows7系統、PHP8版、DELL G3電腦

一、PHP錯誤類型

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 &#39;echo&#39; (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); 
?>
登入後複製

php 錯誤等級種類有哪些

說明:在第10行中,呼叫了函數diff(),但函數diff()沒有的宣告定義,所以它給了錯誤。

3、警告錯誤(Warning):

程式的語法沒有錯誤,但是在執行的過程中,PHP 會發現程式有些不合理的地方,從而提示出警告訊息,但程式會繼續向下執行。

範例:把 0 作為除數時,會造成程式運行錯誤並輸出錯誤訊息。

<?php
    $a = 1;
    $b = 0;
    $c = $a / $b;
    echo "$a / $b = $c";
?>
登入後複製

錯誤:

php 錯誤等級種類有哪些

#4、注意錯誤(Notice):

它類似於警告錯誤,這表示程式包含錯誤,但它允許執行腳本。在使用一些未定義變數、常數或陣列key沒有加引號的時候會出現,程式繼續執行

<?php  
header("content-type:text/html;charset=utf-8");
$x = "PHP中文网"; 
echo $x; 
echo $y; 
?>
登入後複製

php 錯誤等級種類有哪些

說明:此程式使用未宣告的變數$y,因此它給出了錯誤訊息。

5、 最低層級的錯誤(Deprecated,不推薦,不建議)

使用一些過期函數的時候會出現,程式繼續執行。

二、PHP錯誤配置

#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個

php 錯誤等級種類有哪些

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(&#39;error_reporting&#39;, E_ALL); // 和 error_reporting(E_ALL); 一样
     error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);//表示php错误,警告,语法错误,提醒都返错。
?>
登入後複製

三、PHP异常

PHP的异常是PHP5的新增特性,与JAVA/C#的异常不同,PHP异常需要手动抛出throw new Exception,而不是系统自动抛出。

PHP错误与异常的区别,他们是2个不同的概念,但有共同的地方:
如果异常不捕获处理,程序将会终止,并报出Fatal Error 错误,看到这里大家就会觉得异常是不是错误的一种,这是一种错觉,但这样理解也可以。但异常捕获后程序可以继续执行,而真正的Fatal Error错误出现后程序就必须终止。

异常可以使用 try{}catch(){} 来捕获捕获,捕获之后后续代码可以继续执行;而错误是无法使用 try{}catch(){} 捕获的。
如果抛出了异常,就必须捕获它,否则程序终止执行。

推荐学习:《PHP视频教程

以上是php 錯誤等級種類有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板