这是一个非常愚蠢的问题,但我想知道一些事情。我有一个必须用 Integer
填充的变量。在某些情况下,我从中获取数据的来源可能会返回一个空字符串或只是处于离线状态。
我不必处理离线情况,因为如果源离线,程序永远不会走到这一步。所以我想做这样的事情:
int i = 0;
try {
i = mySource.getInt();
}
finally {
System.out.println(i);
}
int i = 0
是我的基值,所以如果我必须解析空字符串,我将只使用初始值。在这种情况下,我们将生成一个异常,它不会被捕获。有没有办法在不处理异常的情况下执行类似的操作(因此不使用 catch(Exception e){}
)或者这只是不好的做法?
澄清一下:我现在不需要检查源是否在线,因为它是一个解析过的 xml 文件,所以我会在下载文件时检查它是否离线。
最佳答案
如果您不捕获异常,异常就会传播。因为你知道是什么导致了异常,所以你不希望控制流被打断,你只想要默认值,传播异常没有任何好处。抓起来吃就行了,然后用默认值。
使用 try ... finally
的时候没有 catch 是当你有一些东西需要清理(通常是需要关闭的资源),但你不想处理任何东西可能抛出的异常,你想让他们去。这是相反的情况,您没有任何需要关闭的东西,您只想压制异常并使用默认值。
关于java - 尝试...最后...没有捕获生成异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652986/