如果发生异常,则返回声明

时间:2017-05-25 17:56:02

标签: java exception methods return try-catch

在以下方法中使用return的正确方法是什么?

public Image getImage() {
    try {
        Image img = ImageIO.read(new File(URL));
        return img;
    } catch (IOException e) {
        e.printStackTrace();
    }
}
IDE请求我最后返回一些东西。但我不知道自己应该回归什么。

2 个答案:

答案 0 :(得分:5)

正确答案是:取决于您的要求。选项包括:

如果此方法的调用者可以处理null答案,则从catch块返回null。或者,您可以返回特殊的"在这种情况下预定义的图像对象。可能是一种稍微好一点的方法 - 因为返回null总是在其他地方引起Nullpointerexceptions的第一步。

或者,您捕获并重新抛出一些未经检查的异常。或者你根本就没有抓住并且你会添加"抛出IoException"签名的方法。

使用Java 8时,简单的解决方案是使用新类Optional。

答案 1 :(得分:4)

如果你的方法捕获了异常并且没有抛出任何东西,它必须在try-catch块之后返回一些默认值(可能为null)。

我认为你不应该抓住这个例外。这样,只有在ImageIO.read操作不引发异常时才返回值。当然,您必须声明您的方法throws IOException,因为这是一个经过检查的例外。

这将强制您的方法的调用者处理IOException(或让它自己的调用者处理它)。