【php技術】PHP錯誤類型和屏蔽方法

來源:互聯網
上載者:User

標籤:new   比較   page   恢複   color   5.5   root   medium   工作   

【php技術】PHP錯誤類型和屏蔽方法簡單生活 來源:本站 發表時間:2016-10-30 08:58:12 查看:7 次 一、php的錯誤類型

首先,我們需要知道的是怎麼才能顯示我們的錯誤:

通過在代碼中添加兩行代碼:

1.顯示除E_STRICT外的所有錯誤和警告資訊

error_reporting(E_ALL);

2. 是否把錯誤展示在輸出上

ini_set(‘display_errors‘, ‘On‘);

有了以上兩部操作,我們就可以把我們的錯誤資訊展示在頁面上了。

第二,我們需要知道php有哪些錯誤類型:

根據中文官方文檔,共有16個錯誤層級:

地址:http://php.net/manual/zh/errorfunc.constants.php

在文檔中已經非常清楚的描述錯誤的層級和出錯的原因,這裡我們選擇幾個比較有代表性的錯誤,給大家詳細說明:

1. E_ERROR

致命的執行階段錯誤。這類錯誤一般是不可恢複的情況,例如記憶體配置導致的問題。後果是導致指令碼終止不再繼續運行。頁面上通常會顯示Fatal Error,出現這種錯誤的原因可能為:訪問不存在此函數代碼、伺服器執行時間逾時、調用了不存在的類代碼等等

如:類不存在

$goodsModel = new Goods();

Fatal error: Class ‘Goods‘ not found in D:\web\error.php on line 3

2. E_PARSE

編譯時間文法解析錯誤。解析錯誤僅僅由分析器產生。這種語法錯誤採用專業的IDE就可以很好的避免,諸如phpstorm,zend studio等等。

如:沒有設定變數值

$a = ;

Parse error: syntax error, unexpected ‘;‘ in D:\web\error.php on line 3

3. E_WARNING

運行時警告 (非致命錯誤)。僅給出提示資訊,但是指令碼不會終止運行。

如:

include ‘xxx.php‘;

echo ‘繼續運行‘;

Warning: include(xxx.php): failed to open stream: No such file or directory in D:\web\error.php on line 3

Warning: include(): Failed opening ‘xxx.php‘ for inclusion (include_path=‘.;C:\php\pear‘) in D:\web\error.php on line 3

繼續運行

4. E_NOTICE

運行時通知。表示指令碼遇到可能會表現為錯誤的情況,但是在可以正常啟動並執行指令碼裡面也可能會有類似的通知。這種錯誤的層級稍微低一些。

如:

echo $c;

Notice: Undefined variable: c in D:\web\error.php on line 8

5. E_DEPRECATED

運行時通知。啟用後將會對在未來版本中可能無法正常工作的代碼給出警告。

如:

當我們使用PHP5.5(或更高)時,如果使用mysql_connect(()函數串連資料庫時就會報錯,建議使用更新的MySQL串連方式

$conn = mysql_connect(‘localhost‘,‘root‘,‘admin‘);

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\web\error.php on line 4

還有很多的錯誤類型,大家可以通過文檔瞭解更多。

二、屏蔽方法

1、屏蔽某個函數錯誤資訊

使用@符號,可以屏蔽某個函數錯誤資訊,這是就不會報錯。

如:

$conn = @mysql_connect(‘localhost‘,‘root‘,admin);

2、屏蔽某個類型的錯誤

2.1 在代碼中屏蔽

文法:error_reporting(E_ALL ^ 錯誤常量) 或 error_reporting(E_ALL & ~錯誤常量)

如:

error_reporting(E_ALL ^ E_DEPRECATED);

$conn = mysql_connect(‘localhost‘,‘root‘,‘admin‘);

2.2 在設定檔php.ini中屏蔽

文法:error_reporting = E_ALL & ~錯誤常量

如:

error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_NOTICE

3、屏蔽所有錯誤

方式:

在代碼中error_reporting(0) 或者 修改設定檔error_reporting = 0 

但是我們在工作中一般建議不關閉所有報錯,而是通過日誌的方式記錄所有錯誤資訊,不在頁面中展示錯誤資訊。之後我會給大家介紹怎麼捕捉錯誤並記錄日誌。

【php技術】PHP錯誤類型和屏蔽方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.