Java基础 - 对方法中的返回类型和返回语句有点混淆

时间:2011-11-27 18:04:44

标签: java return

我的理解是,在Java中,如果方法声明了一个返回类型,如果我们不在方法中放置一个return语句,编译就会失败。但是以下代码成功编译。

 public int test() throws Exception{
        throw new Exception("exception");
    }

现在我有点困惑。我认为我的理解是错误的。有人可以澄清一下吗? 谢谢。

1 个答案:

答案 0 :(得分:10)

Java方法必须返回或抛出异常。如果所有可能的代码路径都不导致返回或异常,则编译器拒绝编译。此方法中的唯一代码路径会引发异常,因此它是有效的。

这将是无效的,因为如果i <= 0,则不返回任何内容,并且不会抛出任何异常:

public int test() throws Exception {
    int i = new Random().nextInt();
    if (i > 0) { 
        throw new Exception("exception");
    }
}

如果改为

则有效
public int test() throws Exception {
    int i = new Random().nextInt();
    if (i > 0) { 
        throw new Exception("exception");
    }
    else {
        return 0;
    }
}