java - return 语句 - finally block 未正常完成

标签 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;  
    }

但是finally block 发出警告:

finally block does not complete normally

但根据我的轻描淡写,finally block 总是会被执行并返回对象。为什么警告说无法正常完成?

最佳答案

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

来自JLS spec :

Abrupt completion of a finally clause can disrupt the transfer of control initiated by a return statement.

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

Note that abrupt completion of a finally clause can disrupt the transfer of control initiated by a throw statement.

关于java - return 语句 - finally block 未正常完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781437/

相关文章:

python - eclipse 中的垂直代码块定界符

java - finally block 对于清理代码真的有必要吗(比如关闭流)?

java - 如何制作一个 try-catch block ,该 block 不断调用对象上的方法,直到没有更多异常可捕获

java - 如何从 Struts 2 中的默认拦截器中排除一个操作

java - 如何让一个方法根据传入的参数执行一定次数的操作?

java - 如何使用 `while` 循环执行此任务?

Objective-c Try/Catch 没有捕捉到

java - 访问类并创建对象

java - 在eclipse中导入gradle项目时出现问题

linux - 将windows编码添加到linux上的Eclipse