【发布时间】:2012-06-19 17:45:36
【问题描述】:
我不仅在调试时发现了这种奇怪的行为,而且在正常执行期间也发现了这种奇怪的行为(至少我是这样认为的,基于应用程序的行为)。
如果我使用以下代码(在返回 int 的函数中):
try {
return Integer.parseInt("3");
} catch (NumberFormatException ex) {
System.out.println(ex.getMessage());
return 0;
}
在调试过程中,在'return Integer.parseInt("3");'之后调试器跳转到'return 0;'。它似乎进入了 catch 块,但跳过了 System.out 行,甚至没有将“ex”显示为现有变量。然后函数返回 0。
但如果我将上面的内容替换为以下内容:
int x;
try {
x = Integer.parseInt("3");
} catch (NumberFormatException ex) {
System.out.println(ex.getMessage());
x = 0;
}
return x;
然后一切都按照我的预期运行:x 得到 3 的值,函数返回 3。
为了我的利益,我不知道为什么会发生这种情况。你有什么想法吗?
【问题讨论】:
-
您确定要使用最新版本进行调试吗?尝试清理并重新构建。
-
您查看过返回的实际值吗?有时调试器(由于应用了优化)会跳转到返回位置,该位置似乎设置了不合适的值,但实际上返回值已经正确建立。
-
请向我们展示整个方法。
-
mah 是对的;该函数确实返回 3,而我遇到的问题是由其他原因引起的,调试器只是让我失望。感谢您的帮助,很抱歉浪费您的时间!
-
如果您找到了答案,我建议发布该答案并接受它,以便遇到类似问题的人会看到您找到了解决方案(或多或少)。可以回答您自己的问题(SO 甚至鼓励您这样做)。
标签: java android return try-catch parseint