私は現在、例外の一種類のみをスローするクラスを持っていますが、別の例外コードで:異なるタイプの例外、または異なるコードを持つ単一の例外タイプを使用する方が良いでしょうか?
class Foo
{
public static function method($var)
{
if ($condition1) {
throw new FooException('XXX', 'FORMAT');
}
if ($condition2) {
throw new FooException('XXX', 'RANGE');
}
return doSomething($number);
}
}
class FooException extends Exception
{
public function __construct($message, $code = 'UNDEFINED_ERROR', Exception $previous = null)
{
$this->message = $message;
$this->code = $code;
$this->previous = $previous;
}
}
この最初のimplentationと異なる例外がスローされている別の1の間の重要な違いはありますか?追加の値を持つ
唯一の例外タイプを使用してclass Bar
{
public static function method($var)
{
if ($condition1) {
throw new BarFormatException('XXX');
}
if ($condition2) {
throw new BarRangeException('XXX');
}
return doSomething($number);
}
}
class BarFormatException extends Exception
{}
class BarRangeException extends Exception
{}
違うエラー処理コードでキャッチして適切に修正できるため、さまざまな例外がより優れています。 –
唯一の例外タイプをキャッチして、コードに応じていくつかの異なるタスクを実行するのとどのように違いますか? –
エラー処理コード内のデータを二重チェックし、すべての可能性をテストし、現在の例外を再処理して処理しないケースを処理する必要があります。さまざまな例外タイプを使用すると、PHPが自動的に自動的に行うすべてのものは、より短く、よりクリーンで高速なコードになります。 –