1

いくつかの自己定義例外を使用したい新しいコードを書いています。たとえばTableCreationFailedException。私はPHPを使用しているので、これが派生している基本クラスはExceptionクラスです。

この特定の例外の場合、作成できなかったテーブルを保持する必要があります。

例外でこのテーブル フィールドを設定する最善の方法を考えています。コンストラクターでの必須引数は、進むべき道のようです。新しい引数を引数リストの先頭に置くべきですか? メッセージと引数が必要ないと思われる場合は、それらを削除しますか? もしあれば、ここでの慣習は何ですか?

4

1 に答える 1

2

厳格なルールはありません。このようなものはうまくいきます:

class TableCreationFailedException extends \Exception
{
    public function __construct($table, \Exception $previous = null)
    {
        parent::__construct("Table $table could not be created", 0, $previous);
    }
}

あなたの場合$table、親例外コンストラクターが受け入れるものの前に特殊な引数を置きます。

$previousコンストラクターの引数に追加して、例外を連鎖できるようにすることもお勧めします。

を省略しました$codeが、現在は0;としてハードコードされています。次のように追加できます。

    public function __construct($table, $code = 0, \Exception $previous = null)
    {
        parent::__construct("Table $table could not be created", $code, $previous);
    }
于 2013-05-14T12:45:17.457 に答える