return 语句 - finally 块未正常完成

Bat*_*tty 3 java eclipse try-catch-finally

类似的问题已被问到here。但这并没有提供答案。

try {
        object = (Dev)Class.forName("Dev").newInstance();
    } catch (Exception e) 
    {
        throw new RuntimeException("Devis not available");
    }
    finally
    {
        return object;  
    }
Run Code Online (Sandbox Code Playgroud)

finally块给出警告:

finally 块没有正常完成

但根据我的理解,finally块总是被执行并返回对象。为什么警告说它不会正常完成?

Tho*_*mas 5

问题是 finally 块会删除任何抛出的异常,因为它会发出“正常”返回。

JLS 规范

finally 子句的突然完成可能会中断由 return 语句启动的控制转移。

和(与您的情况更相关):

请注意,finally 子句的突然完成可能会中断由 throw 语句启动的控制转移。