【发布时间】:2018-12-12 11:54:45
【问题描述】:
所以我有以下代码:
public static Image getImage(String filepath, Class cl) {
try {
return ImageIO.read(cl.getResource(filepath));
}
catch (IOException e) {
e.printStackTrace();
}
return null; // Will never execute
}
这是一个基本的 try-catch 块。如果我无法读取图像并将其返回,我会立即进入我的 catch 块。但是,因为我的 return 在 try 块的范围内,而不是在整个函数的范围内,所以当我尝试编译和运行时,我的编译器会发出错误,因为它认为我可能从未点击过 return 语句。因此,我添加了 return null;行来抑制这个警告,但我宁愿有一种更简洁的方式来做到这一点,而不需要放置永远不会运行的代码。我试过添加
@SuppressWarnings("all")
我的代码,但它仍然给我一个错误。有任何想法吗?我觉得应该有办法告诉编译器忽略这样的错误。
另外,如果有任何用处,我正在使用 IntelliJ 作为我的 IDE。
【问题讨论】:
-
"永远不会运行的代码" - 如果你的代码由于某种原因确实抛出了
IOException怎么办?为什么你如此确定你永远不会遇到给定的文件路径只是......错误的情况? -
另外:这是“简洁”的做法。添加 Javadoc 注释说明:“@return 加载的图像,如果文件路径未指向现有文件,则返回 null”
-
@user2864740 我认为只有在最后一行
return null被注释掉时才会出现错误(这是他们想要做的,因为在他们眼中这条线无论如何都不会被执行) -
我不确定。抛出异常时,catch块后编译是否停止?还是我把 fail("message") 放在我的 catch 块中混淆了?
-
@stackUnderflow 执行不会简单地在 catch 上停止...明确地存在一个 catch 块,因此您的应用程序不会停止,但有时间实际处理问题。
标签: java