Java 获取丢失资源的IO异常

Java 获取丢失资源的IO异常,java,exception-handling,Java,Exception Handling,我正在用一个否定的测试用例测试我的代码,即我已经从属性文件中删除了一个键。在这种情况下,假设代码给出一条缺失的资源消息(Looger msg在缺失资源exception的catch块中给出),但它给出的是来自IO exception的catch块的消息,消息是“IO exception:java.lang.NullPointerException”。代码流如下所示: Main类具有试图从常量文件获取密钥的方法 常量文件inturn使用资源束从属性文件获取值。 我正在主类中创建常量文件的一个实例。

我正在用一个否定的测试用例测试我的代码,即我已经从属性文件中删除了一个键。在这种情况下,假设代码给出一条缺失的资源消息(Looger msg在缺失资源exception的catch块中给出),但它给出的是来自IO exception的catch块的消息,消息是“IO exception:java.lang.NullPointerException”。代码流如下所示: Main类具有试图从常量文件获取密钥的方法 常量文件inturn使用资源束从属性文件获取值。
我正在主类中创建常量文件的一个实例。当我从属性文件中删除密钥时,该实例将为null。

访问一个不再存在的密钥,该密钥在Java中已作为IOException存在,因此无论如何都将被抛出。如果要抛出MissingResourceException,则必须在IOException捕获块中执行


或者,您可以检查该键是否为null,如果为null,则抛出MissingResourceException。

当该键丢失时,Properties类返回null,因此您可能有这样的代码:

} catch (Exception e) {
   throw new IOException(e);
}

当您尝试使用结果时,该异常是空指针异常。相反,如果类返回的是空值,则必须检查空值并抛出缺少的资源异常。

我们可以看一些代码吗?这个问题可能需要一些说明和/或源代码,但不应该关闭。目前有4票接近。。。