尝试......最后......没有捕获生成异常

die*_*rre 3 java exception-handling exception

这是一个非常愚蠢的问题,但我想知道一些事情.我有一个变量,我必须填写一个Integer.在某些情况下,我从中获取数据的源可能返回空字符串或只是离线.我不必处理离线情况,因为如果它离线的源,程序永远不会到这么远.所以我想做这样的事情:

    int i = 0;
    try {
        i = mySource.getInt();
    }
    finally {
        System.out.println(i);
    }
Run Code Online (Sandbox Code Playgroud)

int i = 0是我的基值,所以如果我必须解析空字符串我将只使用初始值.在这种情况下,我们将生成一个异常,它不会被捕获.有没有办法做这样的事情而不处理异常(所以不使用catch(Exception e){})或者只是不好的做法?

只是为了澄清:我现在不需要检查源是否在线,因为它是一个已解析的xml文件,因此我在下载文件时会检查它是否处于脱机状态.

Nat*_*hes 10

如果您没有捕获它,则会传播该异常.既然你知道是什么导致了异常,你就不希望控制流被中断,而你只想要默认值,传播异常没有任何好处.抓住它然后吃它,然后使用默认值.

try ... finally没有捕获的时间是你需要清理的东西(通常需要关闭的资源),但你不想处理任何可能被抛出的异常,你想让它们离开.这是相反的情况,你没有任何需要关闭的东西,你只想压制异常并使用默认值.