PHP錯誤處理註冊機制

2022-06-25 12:24:08 字數 3237 閱讀 1371

部落格推薦:

php error_log記錄日誌的使用方法和配置:

手冊:

php的錯誤跟異常區別:

學會以後需要:

主要作用:

1、記錄日誌到指令檔案

2、強錯誤資訊傳送到郵箱之中

error_reporting ;將會向php報告發生的每個錯誤

display_errors ;不顯示滿足上條 指令所定義規則的所有錯誤報告

log_errors ;決定日誌語句記錄的位置

log_errors_max_len ;設定每個日誌項的最大長度

error_log ;指定產生的 錯誤報告寫入的日誌檔案位置

自己動手試試哦!

模擬錯誤 + 模擬異常 + 傳送email + 線上環境對普通使用者隱藏錯誤資訊

1、php錯誤型別和相應例子:

分號缺失,致命錯誤。

直接註冊在根命名空間的error類重名會出現致命錯誤,直接指令碼終止,

如果在錯誤出現之前都沒註冊shutdown函式的話,直接給你乙個error500,很難受

2、自己常用的錯誤報告處理類:

thinkphp的寫法(方然仿照的,真實的tp5.0錯誤處理機制更加細分,sql exception 還有 快取的exception 等等統統繼承基礎類擴充套件出了乙個類(雖然跟沒擴充套件一樣,但是這個oop思想值得借鑑)):

自己用的簡單的錯誤處理:

<?php /**

* 錯誤處理機制

* @author xu <[email protected]> */

class

errorcatch

/*** 錯誤處理

* @access public

* @param integer $errno 錯誤編號

* @param integer $errstr 詳細錯誤資訊

* @param string $errfile 出錯的檔案

* @param integer $errline 出錯行號

* @param array $errcontext 出錯上下文

* @return void

* @throws errorexception

*/public

/*** 異常處理

* @access public

* @param exception $e 異常物件

* @return void

*/public

static

/*** 異常中止處理

* @access public

* @return void

*/public

static

}/**

* 確定錯誤型別是否致命

* @access protected

* @param int $type 錯誤型別

* @return bool

*/protected

static

function isfatal($type)

}//註冊自定義錯誤處理

errorcatch::register();

//模擬丟擲異常

trigger_error("

cannot divide by zero

", e_user_error);

如果上面的trigger_error的時候後面少了乙個;那麼直接就是500,錯誤,顯示伺服器內部錯誤,

不能被shutdown函式捕獲,

像這樣,已經註冊了函式了,就可以捕獲到錯誤資訊:

捕獲異常: syntax error, unexpected end of file
一些常犯的錯誤及其報錯資訊:

<?php 

foreach ( as

$k => $v)//

no any msg catch

array_merge([1,2,3],'');

//warning: array_merge(): argument #2 is not an array in d:\webserver\www\test.php on line 8

if($a)//

notice: undefined variable: a in d:\webserver\www\test.php on line 13

" select * from user where id in ()";

//general error: 936 ocistmtexecute: ora-00936: 缺失表示式 pdo exception in ()後面表示式不能為空不能為array

if(in_array("a", $a));

//notice: undefined variable: a in d:\webserver\www\test.php on line 24

// warning: in_array() expects parameter 2 to be array, null given in d:\webserver\www\test.php on line 24

echo 22

//parse error: syntax error, unexpected end of file, expecting ',' or ';' in d:\webserver\www\test.php on line 27

PHP 錯誤處理機制

在日常的專案開發過程中,總是會出現一些我們意想不到的異常錯誤,如果我們對此沒有進行相對完善的處理,那麼程式看上去也很不專業,也很可能就會成為別人攻擊系統的有效資訊 有些錯誤異常會終止指令碼執行,這個時候如果沒有一些錯誤提示資訊的話,那麼我們只能從頭開始看 了,要知道專案中成百上千行的 對我們來說是件...

PHP 錯誤處理機制

在日常的專案開發過程中,總是會出現一些我們意想不到的異常錯誤,如果我們對此沒有進行相對完善的處理,那麼程式看上去也很不專業,也很可能就會成為別人攻擊系統的有效資訊 有些錯誤異常會終止指令碼執行,這個時候如果沒有一些錯誤提示資訊的話,那麼我們只能從頭開始看 了,要知道專案中成百上千行的 對我們來說是件...

php中錯誤處理機制

php中,異常處理機制是有限的,無法自動丟擲異常,必須手動進行,並且內建異常有限。php把許多異常看作錯誤,這樣就可以把這些異常想錯誤一樣用set error handler接管,進而主動丟擲異常。比如以下warning型別的錯誤是捕獲不到的 warning division by zero in ...