Есть ли "лучший способ" для того, сколько кода помещается внутри блока try/catch
?
Я разместил 3 разных сценария ниже.
Я не включил поведение в каждый блок catch
, и я не включил блок finally. Это должно было улучшить читаемость для зрителей. Предположим, что каждый catch
делает что-то по-другому. И предположим, что finally
будет закрывать поток. Просто попробуйте создать простой для чтения пример для будущих читателей.
- Управление, нет
try/catch
. - Код с 1
try/catch
для каждого необходимого места. - Код с только 1
try/catch
, окружающим весь блок кода.
Что принято считать лучшей практикой и почему?
Сценарий 1
Код без try/catch
, просто для управления.
BufferedReader bufferedReader = new BufferedReader(new FileReader("somepath"));
String line;
while ((line = bufferedReader.readLine()) != null) {
Object object = new Object();
this.doSomething(object);
}
bufferedReader.close();
Сценарий 2
Код с блоком try/catch
для каждого отдельного места.
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader("somepath"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
Object object = new Object();
this.doSomething(object);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
Сценарий 3
Код с 1 try/catch
, окружающим весь блок кода.
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader("somepath"));
String line;
while ((line = bufferedReader.readLine()) != null) {
Object object = new Object();
this.doSomething(object);
}
bufferedReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}