【发布时间】:2013-02-04 09:28:03
【问题描述】:
我继承了一些编译时出错的代码。我得到以下两个错误之一:一个是 return 语句丢失,另一个是 throw/try/catch 不匹配。这个错误似乎与return 语句的位置有关,我整个上午都在移动。它的当前位置产生error: missing return statement。被注释掉的任何一个返回都会产生一条消息,我必须用我的throw 声明try 或catch。
考虑:
static private List<File> getFileListingNoSort(File aDirectory) throws FileNotFoundException {
try {
List<File> result = new ArrayList<File>();
File[] filesAndDirs = aDirectory.listFiles();
List<File> filesDirs = Arrays.asList(filesAndDirs);
for(File file : filesDirs) {
result.add(file); //always add, even if directory
if ( ! file.isFile() ) {
List<File> deeperList = getFileListingNoSort(file);
result.addAll(deeperList);
// return result;
} //close if
// return result;
} // close for
} // close try for getFileListingNoSort
// return result;
catch (Exception exp) {
System.err.println("Error: " + exp.getMessage());
} //close catch getFileListingNoSort
return result;
} //close method
我会认为返回会在尝试之后,但在捕获之前。但是,这对我不起作用。我不太确定为什么我会得到这些区域,除了对程序如何与try/catch 一起流动的误解。谁能告诉我最适合退货的地方并解释原因?
【问题讨论】: