【问题标题】:Executing return statement after try block without finally block在没有finally块的try块之后执行return语句
【发布时间】:2017-06-26 14:46:38
【问题描述】:

我在Android中有一个代码中的一个方法:

try {  
    something();  
    return obj;  
}
catch (Exception e) {   
    e.printStackTrace();
}
return null;

当我在调试模式下运行应用程序时,两个返回语句都会被执行,即使没有 finally 块并且编译器确实需要第二次返回(当我清理它时编译器会说“缺少返回语句”)这怎么可能?即使没有 finally,try 块是否总是这样?

【问题讨论】:

  • “两个返回语句都被执行”——请编辑您的问题并为此声明提供证据。 “这怎么可能”——这是不可能的,这就是为什么你需要解释为什么你认为它会发生。
  • 我认为它只是由调试器显示它超出了您的 try-catch 块
  • @CommonsWare 我认为 OP 正在单步执行代码并查看它如何在每个返回语句之间跳转,使他/她误以为每个语句都已执行......
  • 是的,我认为它只在调试模式下显示,并没有被执行,感谢您的帮助。

标签: java android


【解决方案1】:

您需要第二次返回 (return null;),因为如果 "something()" 抛出异常,则不会执行第一次返回 (return obj;)

【讨论】:

    【解决方案2】:

    这是不可能的。它只是由调试器显示它不在您的 try-catch 块中。突出显示的行并不意味着它已被执行。

    【讨论】:

      【解决方案3】:

      不可能,分享您的完整代码。每个函数只执行一个 return 语句,即当你的函数中遇到“return”语句时,函数的执行被暂停,并且返回一个用户定义的值或原始值,或者你可以说输出给用户。

      【讨论】:

        猜你喜欢
        • 2019-04-07
        • 2020-06-17
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 2013-06-04
        • 2021-05-13
        • 1970-01-01
        • 2018-03-21
        相关资源
        最近更新 更多