我无法调用此函数,尽管它会抛出并处理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
答案 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并且程序将继续,就好像什么也没发生一样,您可能还想提供错误消息,但正如我所说,这取决于您的具体情况