標籤: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之 錯誤 與 異常處理