Consider the following code, where I want to throw a new exception to wrap "previous" exceptions that I just caught.
try {
doSomething();
}
catch (SomethingException $eSomething) {
try {
rollback();
}
catch (RollbackException $eRollback) {
throw new SomethingRollbackException('Copying failed, rollback failed.', null, $eSomething, $eRollback);
}
}
At some point I have two exceptions that I would want to pass in as "$previous", when constructing a new exception.
But natively, only one "previous exception" is supported.
Options I can think of so far:
- Create my own exception class that accepts an additional "previous" exception. But then what? Store it as a private property? Or public? With an accessor? How would I make calling code to care about the extra information?
- Of course I could just write to the log, and discard one or both of the exceptions. But this is not the point of this question.
Create my own exception class that accepts an additional "previous" exception. - Yes, let's say
SomethingRollbackException
Store it as a private property? - Yes, but is matter of taste
With an accessor? - Yes, see above
How would I make calling code to care about the extra information? - something like this:
or