2016-09-02 7 views
1

次の例では、適切なタイプの例外は何ですか? BadMethodCallExceptionに対してInvalidArgumentExceptionを投げるべきですか?InvalidArgumentExceptionとBadMethodCallExceptionをスローする必要があるのはいつですか?

BadMethodCallException:スローされた例外をコールバックが未定義のメソッドを参照する場合や、いくつかの引数が不足している場合の例では、PHPマニュアルで提供のいずれかの定義に該当するように思えます。

InvalidArgumentException:引数が予想される型でない場合にスローされます。

class Foo 
{ 
    public function Bar($arg1, $arg2) 
    { 
     if (!$arg1 && !$arg2) 
     { 
      // InvalidArgumentException or BadMethodCallException? 
      throw new Exception('Both arguments are required.'); 
     } 
     ... 
    } 
    ... 
} 

$Foo = new Foo(); 
$Foo->Bar(null, null); // Exception 

答えて

0

BadMethodCallExceptionがスローされなければなりません。
渡された引数に予想される型がない場合(たとえば配列が必要ですが、代わりに文字列が得られるなど)、InvalidArgumentExceptionが返されます。

関連する問題