首頁  >  文章  >  後端開發  >  PHP專案異常類別該如何設計

PHP專案異常類別該如何設計

王林
王林原創
2019-09-29 11:54:582090瀏覽

PHP專案異常類別該如何設計

PHP異常類別及異常處理操作

異常處理歸類於錯誤處理,PHP從5.1.0開始增加了Exception異常處理類別。

一、異常處理

PHP異常處理與Java相似,都使用try、throw、catch語句,發生異常時程式碼。如果異常沒有被捕獲,而且又使用set_exception_handler()函數作相應的處理的話,那麼將發生一個嚴重的錯誤(致命錯誤),並且輸出 "Uncaught Exception" (未捕獲異常)的錯誤訊息。

1、try:

用於可能發生例外狀況的程式碼區塊。

2、throw:

規定如何觸發(trigger)異常,用於拋出例外。每一個throw必須對應至少一個catch。

3、catch:

捕獲異常,並建立包含異常訊息的物件。

說明:姑且認為php的異常必須throw才能捕獲到。

基本結構:

try{
#some codes
throw new Exception("message"[,code[,...]]);
}
catch(Exception $ex){
#some codes
}

二、PHP 異常基底類別Exception

類別摘要:

Exception {
/* 属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )
final public Exception getPrevious ( void )  //获取异常链中前一个异常
final public int getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )   //获取异常追踪信息
final public string getTraceAsString ( void )  //字符串方式返回异常追踪信息
public string __toString ( void )
final private void __clone ( void )
}

說明:

由該基底類別可看出,php異常物件主要包含異常的文字訊息(message)、例外碼/代號(code,應該是用於開發人員識別)、異常發生的文件(file,即發生異常的php檔案)、異常發生的具體位置(line,拋出異常的行號)。

範例:

<?php
try {
 throw new Exception("Some error message", 30);//抛出异常,设置异常代号为30
} catch(Exception $e) {
 echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
}
?>

#三、自訂異常類別

##實例:

class customException extends Exception
 {
 public function errorMessage()
 {
 //error message
 $errorMsg = &#39;Error on line &#39;.$this->getLine().&#39; in &#39;.$this->getFile()
 .&#39;: <b>&#39;.$this->getMessage().&#39;</b> is not a valid E-Mail address&#39;;
 return $errorMsg;
 }
 }

拋出與捕獲該例外:

try{
throw new customException("这是自定义异常。");
}
catch(customException $ex){
#some codes
}

四、多catch擷取例外

##################### #當一個try語句中可能拋出不同的異常時,對應的可有多個catch區塊捕捉不同類型異常。同java的一些注意點:######1、大異常catch放後面。因為拋出異常時依序判斷先滿足哪個catch,一次只執行一個catch。 ######2、執行一次try,最多執行一個catch(發生異常時),即若前面某個catch滿足執行,則後面的catch不再考慮。 ######推薦教學:###PHP影片教學#######

以上是PHP專案異常類別該如何設計的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn