添加return in最终会隐藏异常



我有以下代码

public static void nocatch()
{
    try
    {
        throw new Exception();
    }
    finally
    {
    }
}

这给出了错误

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Unhandled exception type CustomException

正如预期的那样,但在finally块中添加return语句会使错误消失

public static void nocatch()
{
    try
    {
        throw new Exception();
    }
    finally
    {
        return; //makes the error go away! 
    }
}

有人能解释一下发生了什么事吗?为什么错误会消失?

注意:我写这段代码纯粹是为了实验!

由于您的代码现在是有效的,所以错误消失了。(不好,但有效。)

如果一个finally块只有一个直接的return;语句,那么整个try/catch/finaly或try/finaly语句不能抛出任何异常,因此您不需要声明它可以抛出异常。

在您的原始代码中,您的try块可以(嗯,它)抛出Exception(或者实际代码中的CustomException)-这是一个已检查的异常,这意味着您必须捕获它,或者声明该方法可能抛出它

根据javadoc。。。

The finally block always executes when the try block exits. 
This ensures that the finally block is executed even if an unexpected exception occurs.

所以您的代码现在做得很正确。

相关内容

  • 没有找到相关文章

最新更新