try/catch
对于在一个块中放入多少代码,是否有“最佳实践” ?
我在下面发布了 3 个不同的场景。
我没有在每个catch
块中包含行为,也没有包含 finally 块。这是为了提高观众的可读性。假设每个catch
人做的事情都不同。并假设finally
将关闭流。只是试图为未来的读者创建一个易于阅读的示例。
- 控制,没有
try/catch
。 try/catch
需要的每个地方都带有 1 的代码。- 只有 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
带有 1try/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();
}