0

amnd handle 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

以下のように例外を処理する必要があります

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

メソッドを IOExceptions をスローするように定義します。

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

これは、このメソッドを呼び出すすべてのメソッドがそのような例外を (catch ブロックで) 処理する必要があることを意味します。このメソッドを呼び出すメソッドで例外を処理していないため、このエラーが発生します。

ただし、スローされる可能性のある IOExceptions はすべて処理済みです。メソッドが IOException をスローする可能性があると主張する必要はありません (または正しくありません)。単に削除しthrows IOExceptionます。

null を返すことで例外を処理しました。実装によっては、これが正しい場合と正しくない場合があります。IOException では null が返され、プログラムは何も起こらなかったかのように続行します。代わりにエラー メッセージを表示することもできますが、これは正確な状況によって異なります。

于 2013-09-24T09:59:02.143 に答える