【发布时间】:2015-08-14 23:52:27
【问题描述】:
我正在玩弄一些 Android 编程,并且正在编写几个方法来打开和关闭文件。好吧,我想对文件做一些基本的检查,如果满足条件则返回 true,如果到达方法的末尾则返回 false。
我正在使用 AndroidTestCase 测试这些,并且在我向清单添加了所需的权限以修复我的“canRead()”调用后,我开始逐步检查它们。我看到调试器点击了我的“return true”语句,但随后越过它,它继续到下一行“return false”而不是实际返回。
我知道我可以将“return false”包装在一个 else 块中,但我只是好奇为什么函数在应该返回后继续执行。 “if”块中的 return 语句是刚刚从块中返回,还是应该从整个函数调用中返回?
public boolean OpenFile(String testFile) {
myFile = new File(testFile);
if (myFile.exists() && myFile.isFile() && myFile.canRead()) {
return true;
}
return false;
}
public boolean CloseFile() {
if (myFile != null ) {
return true;
}
return false;
}
【问题讨论】:
-
与
return所在的位置无关,问题是条件不满足。 -
尽量避免
if(expression) return true/false;模式。可能是return myFile.exists() && myFile.isFile() && myFile.canRead();和return myFile != null;。 -
return 总是在执行时立即从函数调用返回。你所描述的没有发生。您可能会错误地解释调试时看到的内容。添加一些日志语句并向我们展示输出。
-
在返回值之前尝试打印,。查看实际行为
-
@AlexisC。这个表达式里面会有额外的逻辑,“return true”只是一个占位符,用于测试我的测试。
标签: java android debugging return