0

我不能调用这个函数,虽然它确实抛出了 amnd 句柄 IOException

 public static String[] readtxt(String f) throws IOException{
    try{
     FileReader fileReader=new FileReader(f);
     BufferedReader bufferedReader=new BufferedReader(fileReader);
     List<String> lines=new ArrayList<String>();
     String line=null;
     while((line=bufferedReader.readLine())!=null)lines.add(line);
     bufferedReader.close();
     return lines.toArray(new String[lines.size()]);
    }catch(IOException e){return null;}     
}

 ...    
 private String[] truth=MainActivity.readtxt(file); 
 // ^ wont compile: Unhandled exception type IOException
4

3 回答 3

2

您要么需要像这样处理您的方法抛出的异常

try{ 
    private String[] truth = MainActivity.readtxt(file);
}catch(IOException ioe){
    // Handle Exception
}

或者您可以throws像这样从方法定义中删除子句

public static String[] readtxt(String f) {

看看你的代码,我真的怀疑这个方法是否真的会抛出任何IOException东西,因为你已经抓住了。因此,您可以删除该子句。

但是如果你真的想扔掉它,那么你可以在你的方法中删除 try-catch 或者在你的 catch 块中做类似的事情

catch(IOException ioe){
    // Throw IOE again
    throw new IOException(ioe);
}
于 2013-09-24T09:58:33.297 回答
0

您将您的方法定义为抛出 IOExceptions;

public static String[] readtxt(String f) throws IOException

这意味着调用此方法的任何方法都必须处理此类异常(在 catch 块中),您没有在调用此方法的方法中处理它们,因此会引发此错误。

但是,您已经处理了任何可能抛出的 IOExceptions。声称该方法可能抛出 IOException 是不必要的(或正确的),因为它永远不会。只需删除throws IOException.

您已通过返回 null 来处理异常,这可能正确也可能不正确,具体取决于您的实现。在 IOException 上,将返回 null 并且程序将继续执行,就好像什么都没发生一样,您也可以选择提供错误消息,但正如我所说,这取决于您的具体情况

于 2013-09-24T09:59:02.143 回答
0

您需要处理如下异常

 try{ 
      private String[] truth=MainActivity.readtxt(file); 
 }catch(IOException exception){
      exception.printStackTrace()
 }
于 2013-09-24T09:53:59.117 回答