На этот вопрос уже есть хорошие ответы, в конечном счете сводящиеся к «это зависит», но я хочу добавить мысль, которая, как я считаю, сильно влияет на то, какой метод лучше для любой конкретной ситуации.
В вашемпримеры фрагментов кода, но ваши уловы catch (Exception e) {}
в противоположность, скажем, catch (IOException e)
или catch (NullReferenceException
, или некоторому другому более узкому типу исключения.Вид (ы) исключений, которые вы ожидаете от кода в блоке try
, будет иметь значение в способе обработки.Особенно, если у вас есть более одного типа для рассмотрения, как это может быть в случае, если вы обрабатываете исключения вне подпрограммы - достаточно большой блок try
верхнего уровня может иметь несколько различных типов исключений для обработки и начинает запускатьриск того, что код будет запутанным.
В целом мое общее правило заключается в том, что если исключение является некритической ошибкой (особенно если она вызвана неправильным вводом данных пользователем), я могу обработать ее в подпрограмме идержать систему в рабочем состоянии.С другой стороны, если исключение означает, что программа должна закрыться, я обрабатываю ее выше.