在以下方法中使用return
的正确方法是什么?
public Image getImage() {
try {
Image img = ImageIO.read(new File(URL));
return img;
} catch (IOException e) {
e.printStackTrace();
}
}
IDE请求我最后返回一些东西。但我不知道自己应该回归什么。
答案 0 :(得分:5)
正确答案是:取决于您的要求。选项包括:
如果此方法的调用者可以处理null答案,则从catch块返回null。或者,您可以返回特殊的"在这种情况下预定义的图像对象。可能是一种稍微好一点的方法 - 因为返回null总是在其他地方引起Nullpointerexceptions的第一步。
或者,您捕获并重新抛出一些未经检查的异常。或者你根本就没有抓住并且你会添加"抛出IoException"签名的方法。
使用Java 8时,简单的解决方案是使用新类Optional。
答案 1 :(得分:4)
如果你的方法捕获了异常并且没有抛出任何东西,它必须在try-catch块之后返回一些默认值(可能为null)。
我认为你不应该抓住这个例外。这样,只有在ImageIO.read
操作不引发异常时才返回值。当然,您必须声明您的方法throws IOException
,因为这是一个经过检查的例外。
这将强制您的方法的调用者处理IOException
(或让它自己的调用者处理它)。