Java 异常情况下的返回语句

Java 异常情况下的返回语句,java,exception,methods,return,try-catch,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要求我在最后返回一些东西。但是我不知道应该返回什么。如果您的方法捕获到异常并且没有抛出任何内容,那么它必

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

public Image getImage() {
    try {
        Image img = ImageIO.read(new File(URL));
        return img;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

IDE要求我在最后返回一些东西。但是我不知道应该返回什么。

如果您的方法捕获到异常并且没有抛出任何内容,那么它必须在try-catch块之后返回一些默认值(可能为null)

我认为你不应该抓住这个例外。这样,仅当
ImageIO.read
操作未引发异常时,才返回值。当然,您必须声明您的方法
抛出IOException
,因为这是一个选中的异常


这将迫使方法的调用者处理
IOException
(或者让它自己的调用者处理)。

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

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

或者,捕获并重新显示一些未检查的异常。或者您根本不捕获,而是在方法的签名中添加“抛出IoException”


当您使用Java8时,简单的解决方案是使用新的可选类

如果您无法返回任何有用的内容,请不要捕获、重试或抛出
RuntimeException
IllegalStateException
@luk2302,在某些情况下,返回
可选的
可能是有意义的,谢谢您的全面回答!记录在案:我在我的答案中添加了另一个重要选项。