PHP之 錯誤 與 異常處理

來源:互聯網
上載者:User

標籤:display   echo   color   php   str   文法   warning   寫入   產生   

PHP的錯誤報表有三種:

1.錯誤,文法解析錯誤,致命錯誤
2.警告
3.注意

錯誤 -> 致命錯誤,會終止已下程式的執行,語法錯誤的話,PHP壓根就沒執行
警告 -> 他不會終止運行,但會影響結果
注意 -> 不會終止執行,也不會影響結果


為了讓使用者得到更好的體驗,我們屏蔽所有錯誤的輸出,是輸出,而不是顯示
但這樣的話,管理員也看不到錯誤了。

頁面上不顯示錯誤,而將錯誤產生一個日誌,提供給管理員查看。

error_reporting(~E_ALL)將所有輸出都屏蔽掉了,自然,管理員也看不到了

我不要屏蔽所有輸出,我只要屏蔽所有顯示

ini_set(‘display_errors‘,‘off‘);表示屏蔽了所有的頁面上錯誤的顯示,但沒有屏蔽錯誤的輸出

ini_set(‘log_errors‘,‘on‘);    //開啟日誌寫入功能ini_set(‘error_log‘,‘myerror.log‘); //日誌的存放位置ini_set(‘display_errors‘,‘off‘);    //屏蔽頁面顯示error_reporting(E_ALL);    //輸出所有錯誤
echo 123;echo $str;    //這個會出現一個注意,表示未聲明變數echo date();  //警告,沒有傳參echo dae();   //致命錯誤,找不到這個函數echo 123;

 

異常:

在 PHP語言裡,所有異常都必須自己拋出,而不像 JAVA 之類的語言會自動

拋出異常,這也正是 PHP原始碼裡很少看到異常處理語句的原因之一。

 

<?php// 如果PHP內建了處理被除數不能為零的異常類,那麼是不需要手動拋出的$a = 5;$b = 0;try {    echo $a / $b;} catch (Exception $e) {    echo ‘發現異常了‘;        }// 這種情況下,是不會執行捕獲語句的,頁面上依舊顯示報錯資訊:Warning: Division by zero

 

<?php//PHP無法自動拋出異常,所以需要我們手動拋出$a = 5;$b = 0;try {    if ($b == 0) throw new Exception(‘被除數為零‘);    echo $a / $b;} catch (Exception $e) {    echo ‘產生異常:‘.$e->getMessage();}

頁面輸出:  產生異常:被除數為零

 

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.