考虑以下代码,我想抛出一个新的异常来包装" previous"我抓到的例外情况。
try {
doSomething();
}
catch (SomethingException $eSomething) {
try {
rollback();
}
catch (RollbackException $eRollback) {
throw new SomethingRollbackException('Copying failed, rollback failed.', null, $eSomething, $eRollback);
}
}
在某些时候,我有两个例外情况,我希望在构建新例外时以#34; $ previous"传递。
但在本地,只有一个"之前的例外"得到支持。
到目前为止我能想到的选项:
答案 0 :(得分:2)
创建我自己的异常类,接受额外的“上一个”异常。 - 是的,让我们说SomethingRollbackException
将其存储为私有财产? - 是的,但是有品味
使用访问者? - 是,请参阅上面的
如何使调用代码关注额外信息? - 类似这样的事情:
if ($exception instanceof SomethingRollbackException) {
// at this point you know $exception has 2 previous exceptions
}
或
try {
// ....
} catch(SomethingRollbackException $e) {
// at this point you know $exception has 2 previous exceptions
}