PHP: сгенерировать исключение с несколькими исходными / предыдущими исключениями?

Рассмотрим следующий код, где я хочу создать новое исключение, чтобы обернуть «предыдущие» исключения, которые я только что перехватил.

try {
doSomething();
}
catch (SomethingException $eSomething) {
try {
rollback();
}
catch (RollbackException $eRollback) {
throw new SomethingRollbackException('Copying failed, rollback failed.', null, $eSomething, $eRollback);
}
}

В какой-то момент у меня есть два исключения, которые я хотел бы передать как «$ previous», при создании нового исключения.

Но изначально поддерживается только одно «предыдущее исключение».

Варианты, которые я могу придумать до сих пор:

  • Создайте свой собственный класс исключений, который принимает дополнительное «предыдущее» исключение. Но что тогда? Хранить это как частную собственность? Или публичный? С аксессором? Как бы я сделал код вызова, чтобы заботиться о дополнительной информации?
  • Конечно, я мог бы просто написать в журнал и отменить одно или оба исключения. Но это не главное в этом вопросе.

1

Решение

Создайте свой собственный класс исключений, который принимает дополнительное «предыдущее» исключение. — Да скажем 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
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]