Сколько операторов в выражении try / catch? - PullRequest
7 голосов
/ 18 января 2010

Должен ли я поместить несколько операторов в попытку и затем перехватить все возможные исключения, или мне следует добавить только одну инструкцию в инструкцию try?

Пример:

try {
    MaybeThrowIOException();
    MaybeThrowFooBarException();
    return true;
} catch (IOException e) {
    // ...
} catch (FooBarException e) {
   // ... 
}

Или

try {
    MaybeThrowIOException();
} catch (IOException e) {
    // ...
}

try {
    MaybeThrowFooBarException();
} catch (FooBarException e) {
   // ... 
}

return true;

Ответы [ 13 ]

0 голосов
/ 18 января 2010

вы можете использовать любой из них.

но если вы используете первое, вы должны поймать более конкретные исключения.

0 голосов
/ 18 января 2010

В соответствии с тем, что говорит jldupont, я стараюсь всегда разделять свои потенциальные заявления о рисках на несколько блоков try / catch. Таким образом, когда что-то идет не так, вы знаете точно , где это было, и вы можете иметь конкретные сообщения об ошибках для каждой проблемы.

0 голосов
/ 18 января 2010

Я думаю, ваш первый пример лучше практики, чем второй.

...