有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

这真是个愚蠢的问题,但我想知道一些事情。我有一个变量,我必须用Integer填充它。在某些情况下,我从中获取数据的源可能返回空字符串,或者只是脱机。 我不必处理脱机的情况,因为如果源代码处于脱机状态,程序将永远不会走到这一步。所以我想这样做:

    int i = 0;
    try {
        i = mySource.getInt();
    }
    finally {
        System.out.println(i);
    }

int i = 0是我的基值,因此如果我必须解析空字符串,我将只使用初始值。在这种情况下,我们将生成一个异常,它将不会被捕获。有没有一种方法可以在不处理异常的情况下执行类似的操作(因此不使用catch(Exception e){}),或者这只是一种不好的做法

只是澄清一下:我现在不需要检查源代码是否在线,因为它是一个已解析的xml文件,所以我将在下载文件时检查它是否离线


共 (4) 个答案

  1. # 1 楼答案

    如果您没有捕获到异常,它将传播。因为您知道异常的原因,所以不希望控制流被中断,只需要默认值,传播异常没有任何好处。只需捕获并吃掉它,然后使用默认值

    在没有捕获的情况下使用try ... finally的时间是当您有需要清理的东西(通常是需要关闭的资源)时,但是您不想处理任何可能抛出的异常,而是想让它们消失。这是相反的情况,您没有任何需要关闭的内容,您只想压制异常并使用默认值

  2. # 2 楼答案

    如果控制getInt(),则使其抛出未经检查的异常并删除throws子句。他在几年前输掉了这场战争

  3. # 3 楼答案

    我不确定我是否理解您的意思,但finally用于确保在可能引发异常时执行代码块。如果没有钓到鱼,我看不出有什么意义

  4. # 4 楼答案

    当满足以下条件时,检查的异常是合理的:

    1. 正确使用API无法防止这种异常情况
    2. 一旦遇到异常,使用API的程序员可以采取一些有用的操作

    否则,未经检查的异常更合适(如@Stefan Kendall所建议的)