2016-04-17 65 views
1

如果我有方法:为什么在这里不需要return语句?

public static boolean getA() throws Exception{ 
    try{ 
     throw new Exception(); 
    }finally 
    { 

    } 
} 

有不需要return语句。此外,如果我们试图在最后添加return语句,则会生成“无法访问的语句”错误。

这是为什么?它确定程序不会出现在程序块中,并且会抛出异常吗?此外,如果我们添加一个catch块而不是finally块,那么它需要return语句在那里。

+1

编译器知道无条件的异常使得进一步的执行变得不可能,更多的代码是不可访问的。 'return'是必需的,因为返回类型是'boolean' –

+0

不可能在'throws'之后放置代码,所以编译器不期望你。 –

回答

2

因为您已经指定了一个throw语句,并且方法定义中没有别的东西。这就是为什么。我想这很简单。

return语句将无法访问,因为它将抛出异常而不管所有事情。

该catch将需要返回语句,因为您正在明确处理该异常,现在它希望您返回,因为您已在方法定义中声明。

我希望你知道,你可以保持捕获和最终块。因为他们服务于他们自己的不同目的。

Java Exceptions

0

是的,确定程序会抛出一个异常,这是你在try块中做的第一行。

即使它不是try块中的第一条语句,也没有catch块,因此任何理论上以前抛出的异常都不会被捕获。

0

这可能是因为当你抛出一个怀疑,执行停止,因此为什么最终永远不会运行。当你发现异常时,执行将继续,你将不得不返回。