php攔截異常怎麼寫

2021-10-01 22:47:24 字數 2954 閱讀 8275

php攔截異常可以通過php的錯誤、異常機制及其內建數』set_exception_handler』、『set_error_handler』、『register_shutdown_function』 來寫。

『set_exception_handler』 函式 用於攔截各種未捕獲的異常,然後將這些交給使用者自定義的方式進行處理

『register_shutdown_function』 函式是在php指令碼結束時呼叫的函式,配合』error_get_last』可以獲取最後的致命性錯誤

這個思路大體就是把錯誤、異常、致命性錯誤攔截下來,交給我們自定義的方法進行處理,我們辨別這些錯誤、異常是否致命,如果是則記錄的資料庫或者檔案系統,然後使用指令碼不停的掃瞄這些日誌,發現嚴重錯誤立即傳送郵件或傳送簡訊進行報警

首先我們定義錯誤攔截類,該類用於將錯誤、異常攔截下來,用我們自己定義的處理方式進行處理,該類放在檔名為』errorhandler.class.php』中,**如下:

/**

* 檔名稱:baseerrorhandler.class.php

* 摘 要:錯誤***父類

*/require

'errorhandlerexception.class.php'

;//異常類

class

errorhandler

/*** 方 法:取消自定義錯誤、異常***

* 參 數:void

* 返 回:void

*/public

function

unregister()

/*** 方 法:處理截獲的未捕獲的異常

* 參 數:exception $exception

* 返 回:void

*/public

function

handleexception

($exception

)catch

(exception $e)}

/*** 方 法:處理截獲的錯誤

* 參 數:int $code 錯誤**

* 參 數:string $message 錯誤資訊

* 參 數:string $file 錯誤檔案

* 參 數:int $line 錯誤的行數

* 返 回:boolean

*/public

function

handleerror

($code

,$message

,$file

,$line)}

throw

$exception;}

return

false;}

/*** 方 法:截獲致命性錯誤

* 參 數:void

* 返 回:void

*/public

function

handlefatalerror()

}/**

* 方 法:獲取伺服器ip

* 參 數:void

* 返 回:string

*/final

public

function

getserverip()

elseif

(isset

($_server

['local_addr'])

)elseif

(isset

($_server

['hostname'])

)else

return

$serverip;}

/*** 方 法:獲取當前uri資訊

* 參 數:void

* 返 回:string $url

*/public

function

getcurrenturi()

else

}return

$uri;}

/*** 方 法:記錄異常資訊

* 參 數:errorhandlerexception $e 錯誤異常

* 返 回:boolean 是否儲存成功

*/final

public

function

logexception($e

)while($e

=$e->

getprevious()

);$error

['message']=

implode

("\r\n"

,$error

['message'])

;$this

->

logerror

($error);

}/**

* 方 法:記錄異常資訊

* 參 數:array $error = array(

* 'time' => int,

* 'title' => 'string',

* 'message' => 'string',

* 'code' => int,

* 'server_ip' => 'string'

* 'file' => 'string',

* 'line' => int,

* 'url' => 'string',

* );

* 返 回:boolean 是否儲存成功

*/public

function

logerror

($error

)}

上述**中,有個』errorhandlerexception』類,該類放在檔案』errorhandlerexception.class.php』中,該類用於將錯誤轉換為異常,以便記錄錯誤發生的檔案、行號、錯誤**、錯誤資訊等資訊,同時其方法』isfatalerror』用於辨別該錯誤是否是致命性錯誤。

Spring aop 實現異常攔截

使用aop異常掛載功能可以統一處理方法丟擲的異常,減少很多重複 實現如下 1 實現throwadvice 1 public class exceptionhandler implements throwsadvice 8 1 bean id exceptionhandler class com.lz...

php的核心擴充套件怎麼寫

方法 一 用c去寫php的核心擴充套件,然後php就像呼叫原生函式一樣呼叫 舉例如下 php crypto.c include stdio.h include php.h include php crypto.h include netpayclient.h php function signord...

攔截自定義異常

1.通用返回response import lombok.allargsconstructor import lombok.data import lombok.noargsconstructor 通用返回response data allargsconstructor noargsconstruc...