2016-12-12 9 views
1

配列をExceptionとして渡そうとしています。私は後でjsonにエンコードします。配列()を例外としてスローしながらエラーを取得します。

try { 
    class myException extends Exception { 
     private $params; 
     public function setParams(array $params) { $this->params = $params; } 
     public function getParams() { return $this->params; } 
    } 

    throw new myException(
     array(
      'error' => array(
       'status' => true, 
       'code' => '12', 
       'note' => 'Does NOT contain application/json' 
      ) 
     ) 
    ); 

} catch (myException $e) { 
    print_r($e->getParams()); 
} 

しかし、次のエラーを得続ける:

Fatal error: Uncaught Error: Wrong parameters for myException([string $message [, long $code [, Throwable $previous = NULL]]]) in /home/domain/script.php:79 Stack trace:

#0 /home/domain/script.php(79): Exception->__construct(Array)

#1 {main} thrown in /home/domain/script.php on line 79


は配列を渡すことも可能ですか?

もしそうなら、私のコードで何が間違っていますか?

答えて

0

Exception::__construct最初の引数として文字列が必要です。配列を渡す場合は、コンストラクタをオーバーライドする必要があります。

class myException extends Exception { 
    private $params; 
    public function setParams(array $params) { $this->params = $params; } 
    public function __construct(array $params = array(), $code = 0, Throwable $previous = NULL) { 
     $this->setParams($params); 

     parent::__construct('', $code, $previous); 
    } 
+0

それを使用しているとき、私は次のエラーを取得する: '致命的なエラー:不明なエラーは:未定義のメソッドmyExceptionに呼び出し:: /home/domain/script.php:25 スタックトレースでSETPARAMSを(): #0 /home/domain/script.php(79):myException- > __construct(配列) 25行目の/home/domain/script.phpに#1 {メイン}スローされました ' – Borsn

+0

行25は' $ this-> setParams ($ params);はそうです。 – Borsn

+0

なぜあなたは 'public function setParams(array $ params){$ this-> params = $ params;}を削除しましたか? } '?あなたはクラスの残りの部分を保つべきです。 – Federkun

関連する問題