假设有一个getValueFormFile方法,它是pubic并返回一个int。它不接受任何参数,并且能够抛出IOException和FIleNotFoundException。
编写一个调用上述getValueFormatFile方法的try语句。一定要处理该方法可以抛出的所有异常,
这就是我所拥有的
try {
int value = getValueFromFile();
} catch(FileNotFoundException e) {
} catch(IOException e) {
}
这是处理问题的正确方法吗?
答案 0 :(得分:2)
不,忽略异常几乎不是处理它们的正确方法。
在这种情况下,您必须确定处理异常的含义。您想使用默认值吗?你想中止执行吗?您想尝试不同的方法来获取值吗?是否选择正确的策略取决于文件是否丢失或是否由于其他原因而无法读取?
调用者可以精确处理异常,因为正确的处理取决于只有调用者知道的上下文。
答案 1 :(得分:1)
您通常希望打印堆栈跟踪,记录错误或(通常不是一个好主意)使用默认值填充值。
int value;
try {
value = getValueFromFile();
} catch(FileNotFoundException e) {
e.printStackTrace();
value = -1; // careful with this. Using -1 as an example because that's a common convention for representing an error condition
} catch(IOException e) {
e.printStackTrace();
value = -1; // careful with this. Using -1 as an example because that's a common convention for representing an error condition
}