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