簡體   English   中英

PHP使異常接受數組和對象類型的消息

[英]PHP Make Exception Accept Messages of Array and Object Type

我正在嘗試將數組傳遞給Exception類,我得到一個錯誤說明:

PHP Fatal error:  Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]])

顯然,這意味着標准的Exception類不處理這些變量類型,因此我想將Exception類擴展為可以使用字符串,數組和對象作為消息類型的自定義異常處理程序。

class cException extends Exception {

   public function __construct($message, $code = 0, Exception $previous = null) {
      // make sure everything is assigned properly
      parent::__construct($message, $code, $previous);
   }

}

在我的自定義異常中需要重新格式化$message參數以允許這些變量類型?

這取決於您希望消息的工作方式。 最簡單的方法是向構造函數添加一些代碼,根據類型將消息轉換為字符串。 只使用print_r是最簡單的。 嘗試在傳遞給父__construct之前添加它。

$message = print_r($message, 1);

將自定義getMessage()函數添加到自定義異常中,因為無法覆蓋最終的getMessage。

class CustomException extends Exception{
    private $arrayMessage = null;
    public function __construct($message = null, $code = 0, Exception $previous = null){
        if(is_array($message)){
            $this->arrayMessage = $message;
            $message = null;
        }
        $this->exception = new Exception($message,$code,$previous);
    }
    public function getCustomMessage(){
        return $this->arrayMessage ? $this->arrayMessage : $this->getMessage();
    }
}

捕獲CustomException時,調用getCustomMessage(),它將返回您在$ message參數中傳遞的內容

try{
    ..
}catch(CustomException $e){
    $message $e->getCustomMessage();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM