【问题标题】:Why is return statement not required here?为什么这里不需要 return 语句?
【发布时间】:2016-04-17 13:24:48
【问题描述】:

如果我有方法:

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

    }
}

不需要返回语句。此外,如果我们尝试在末尾添加 return 语句,则会产生“unreachable statement”错误。

为什么会这样?确定程序不会出块,会抛出异常吗?

此外,如果我们添加一个 catch 块而不是 finally 块,那么它需要 return 语句出现在那里。

【问题讨论】:

  • 编译器知道无条件异常使进一步的执行变得不可能,更多的代码无法执行。 return 是必需的,因为返回类型是 boolean
  • 不可能将代码放在throws 之后,因此编译器不希望您这样做。

标签: java try-catch


【解决方案1】:

因为你已经指定了一个 throw 语句,并且在方法定义中没有其他内容。因此。我想就是这么简单。

return 语句将无法访问,因为它会抛出异常而不管一切。

catch 将需要 return 语句,因为您现在正在显式处理异常,它希望您按照在方法定义中声明的方式返回。

我希望你知道,你可以同时保持 catch 和 finally 块。因为它们有不同的用途。

Java Exceptions.

【讨论】:

    【解决方案2】:

    是的,程序肯定会抛出异常,这是您在 try 块中所做的第一行。

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

    【讨论】:

      【解决方案3】:

      这可能是因为当您抛出异常时,执行停止,因此为什么 finally 永远不会运行。当你捕捉到异常时,执行将继续,你将不得不返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-10
        相关资源
        最近更新 更多