次のコードを検討してください。新しい例外をスローして、キャッチした「前の」例外をラップします。
try {
doSomething();
}
catch (SomethingException $eSomething) {
try {
rollback();
}
catch (RollbackException $eRollback) {
throw new SomethingRollbackException('Copying failed, rollback failed.', null, $eSomething, $eRollback);
}
}
ある時点で、新しい例外を作成するときに、「$previous」として渡したい 2 つの例外があります。
ただし、ネイティブでは、「前の例外」は 1 つしかサポートされていません。
これまでに考えられるオプション:
- 追加の「前の」例外を受け入れる独自の例外クラスを作成します。しかし、その後は?私有地として保管?それとも公開?アクセサ付き?追加情報を気にする呼び出しコードを作成するにはどうすればよいですか?
- もちろん、ログに書き込み、1 つまたは両方の例外を破棄することもできます。しかし、これはこの質問のポイントではありません。