Воняет. Для отлова исключения требуется восстановить состояние программы, как если бы doSomethingElse () никогда не вызывался. Это очень сильно зависит от того, что делает метод, но обычно довольно необычно писать метод без каких-либо побочных эффектов. Если есть, то эти побочные эффекты должны быть отменены. Только doSomethingElse () может сделать это, метод doSomething () не в состоянии угадать, сколько из этих побочных эффектов было фактически выполнено. И, таким образом, не может надежно восстановить состояние.
Это особенно актуально, когда вы ловите все исключения. Вы также возьмете противных. Как AccessViolation или FatalExecutionEngineError, исключения, которые оставляют сам CLR в неизвестном состоянии, вы никогда не сможете восстановить это. Что будет дальше, совершенно непредсказуемо. Вы получите множество дополнительных исключений, только если вам повезет. Диагностировать их невозможно, вы выбросили ценную информацию.