Вам нужно иметь разные классы исключений, чтобы иметь возможность выяснить, что на самом деле произошло в случае обработки какого-либо конкретного исключения.
Как:
try {
// do something
} catch (OptimizeImageException $e) {
// image cannot be optimized. left it as is and log the error message
}
В приведенном выше коде вы обрабатываете один конкретный случай исключения, который можно обработать прямо здесь и сейчас, чтобы переместить поток приложения, как ожидалось.Другие возможные исключения будут идти выше.
Если у вас был только один класс исключений, такой как MyAppException
, тогда все, что вы могли бы сделать, это просто перехватить его, проверить сообщение (что странно), чтобы понять, что на самом деле произошло, и если выне может справиться с этим - отбросить исключение.Как вы можете видеть, ваш код будет немного хакерским и неприемлемым (вы не можете изменить сообщение об исключении)