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

标签 java exception exception-handling

这是一个非常愚蠢的问题,但我想知道一些事情。我有一个必须用 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/

相关文章:

java - 发生异常时显示完整的堆栈跟踪

java - 使用方法从文本文件获取输出时,未处理的异常类型IOException

java - 服务器到客户端的通信方式

java - GUI...为什么我的按钮不响应第一个 if 并且总是前往下一个选项

java - Kotlin/Java,字符串数组在方法调用时尚未初始化

c - 如何处理 C 中的 free() 错误?

node.js - SailsJS 中处理异常的最佳实践

Java/Android - 我如何知道类的任何实例中的变量是否为真?

JavaFX 一次运行大量倒计时器?

java - 如果所请求的 key 不存在,应该抛出什么异常?