中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php錯誤級別種類實例代碼分析

發布時間:2023-01-31 14:16:22 來源:億速云 閱讀:106 作者:iii 欄目:編程語言

本篇內容介紹了“php錯誤級別種類實例代碼分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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

一、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 '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); 
?>

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 = "億速云"; 
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('error_reporting', 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錯誤級別種類實例代碼分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

铁力市| 南漳县| 天镇县| 莱州市| 清镇市| 仲巴县| 都江堰市| 乐昌市| 阳信县| 尉氏县| 海盐县| 绿春县| 大理市| 神农架林区| 密山市| 富民县| 沾化县| 丹巴县| 格尔木市| 南昌市| 北碚区| 镇巴县| 闵行区| 广州市| 玉溪市| 新丰县| 宜州市| 万盛区| 会理县| 南宁市| 阳西县| 安陆市| 阿巴嘎旗| 泸州市| 肥城市| 大冶市| 郎溪县| 酉阳| 名山县| 调兵山市| 都安|