Java。处理 catch 块中的死代码(通过应用程序逻辑)

Java. Handle dead code (by application logic) in catch block

我有如下一段代码。

Path path = Paths.get(file.getAbsolutePath());
ByteArrayResource resource = null;
try {
    resource = new ByteArrayResource(Files.readAllBytes(path));
} catch (IOException e) {
    // DEAD CODE.
    // file existance is checked by resource manager
}

有没有更好的方法来处理死捕获? “文件”变量由资源管理器加载,它已经处理了找不到文件的情况(通过自身抛出异常)。这是“死代码”只是因为应用程序逻辑,如果不是经理做检查,这就不是“死代码”。

我能想到的替代方法是创建一个自定义的 DeadCodeException()(扩展 RuntimeException())并在出现这种情况时抛出它。这不会在“资源”上导致 NullPointerException(),以防将来管理器逻辑发生变化。

如何使用良好的代码标准来处理这种情况?

编辑:

谢谢大家。显然我在这里犯了一个错误。正如@GenerousBadger 和@RandomCoder_01 所说,IOExceptionI() 不是 FileNotFoundException(),因此在正确(错误?)的情况下仍然可以抛出它。

我会在类似的情况下使用 AssertionError(),至于这个,我必须处理异常。

编译器没有你知道的那么多。它不知道您已经检查过文件是否存在(当然,文件可能会在检查存在和使用之间被删除)。

你应该向编译器(和读者)表明,如果你达到那个点,事情就真的坏了。执行此操作的标准方法如下:

} catch (IOException e) {
    throw new AssertionError("Should not reach here, already checked for existence!", e);
}