Java 在try块之后执行return语句而不使用finally块

Java 在try块之后执行return语句而不使用finally块,java,android,Java,Android,我在Android中有一个方法代码: try { something(); return obj; } catch (Exception e) { e.printStackTrace(); } return null; 当我在调试模式下运行应用程序时,两个返回语句都会执行,即使没有finally块,编译器也需要第二次返回(当我清理它时,编译器会说“缺少返回语句”),这怎么可能呢?即使没有finally,try块也总是这样吗?不可能,请分享您的完整代码。

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

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

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

不可能,请分享您的完整代码。每个函数只执行一条return语句,即当遇到函数中的“return”语句时,函数的执行将停止,并返回一个值,无论是用户定义的还是原语的,或者您可以说是输出给用户的。

不可能,请共享您的完整代码。每个函数只执行一个return语句,即当遇到函数中的“return”语句时,函数的执行将停止,并返回一个值,无论是用户定义的还是原语的,或者您可以说是输出给用户的。

您需要第二次返回(
return null;
),因为如果“something()”抛出异常,那么第一个返回(
return obj;
)将不会执行

您需要第二个返回(
return null;
),因为如果“something()”抛出异常,那么第一个返回(
return obj;
)将不会执行

这是不可能的。调试器刚刚显示它超出了try-catch块。高亮显示的行并不意味着它已执行

这是不可能的。调试器刚刚显示它超出了try-catch块。高亮显示的行并不意味着它已执行

“两个返回语句都被执行”--请编辑您的问题,并为该索赔提供证据。“这是怎么可能的”--这是不可能的,这就是为什么你需要解释为什么你认为它正在发生。我认为调试器刚刚表明它超出了你的尝试范围block@CommonsWare我认为OP是在代码中单步走,看看它是如何在每个返回语句之间跳跃的,让他/她误以为每条语句都已执行……是的,我认为它只在调试模式下显示,不会执行,谢谢你的帮助。“两条返回语句都已执行”——请编辑你的问题并提供你的证据。“这是怎么可能的”--这是不可能的,这就是为什么你需要解释为什么你认为它正在发生。我认为调试器刚刚表明它超出了你的尝试范围block@CommonsWare我认为OP是在代码中单步走,看看它是如何在每个返回语句之间跳跃的,让他/她误以为每个语句都已执行…是的,我认为它仅在调试模式下显示,不会执行,谢谢您的帮助。