调用ioexception抛出函数

时间:2013-09-24 09:49:45

标签: java android exception-handling

我无法调用此函数,尽管它会抛出并处理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

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您需要处理如下所示的异常

 try{ 
      private String[] truth=MainActivity.readtxt(file); 
 }catch(IOException exception){
      exception.printStackTrace()
 }

答案 2 :(得分:0)

您将方法定义为抛出IOExceptions;

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

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

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

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