-3
package mp1practice;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Driver 
{    
    ArrayList<String> arraylist = new ArrayList<String>();

    public void GrabData() {

        try {
            BufferedReader br = new BufferedReader(new FileReader("data/Catalog.txt"));
        }catch (FileNotFoundException ex) {
            Logger.getLogger(Driver.class.getName()).log(Level.SEVERE, null, ex);
    }
  }        
}

こんにちは、tryとcatchに関する非常に基本的な質問があります。報告されていない例外というエラーが発生します。キャッチするか、スローするように宣言する必要があります。何か案は?

解決しました!!

4

4 に答える 4

2

最も簡単な変更は、コードをイニシャライザーブロックに配置することです。

public class Driver {
    private final List<String> arraylist = new ArrayList<String>();
    {
        try {
            BufferedReader br = new BufferedReader(new FileReader("data/Catalog.txt"));
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Driver.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

しかし、もっと便利なのは、expicitとフィールドの設定です。

public class Driver    {
    private final List<String> arraylist = new ArrayList<String>();
    private final BufferedReader br;

    public Driver() throws FileNotFoundException {
        br = new BufferedReader(new FileReader("data/Catalog.txt"));
    }
于 2012-06-20T17:34:03.737 に答える
1

これをメソッド宣言行に入れる必要があると思います。

throws FileNotFoundException
于 2012-06-20T17:29:08.863 に答える
1

まず、try-catchブロックはメソッド内にある必要があります。次に、BufferedReaderandクラスはファイルパーミッションに対してもをFileReaderスローします。IOException

それで:

public void methodName() {
    try {
        BufferedReader br = new BufferedReader(new FileReader("data/Catalog.txt"));
    } catch (FileNotFoundException ex) {
        Logger.getLogger(Driver.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException e) {
        // do something for IO exception here.
    }
}

throws Exceptionまたは、コードによってスローされる可能性のある他の例外について、メソッド宣言に追加することもできます。

于 2012-06-20T17:31:02.857 に答える
1

try / catchを使用すると、「試行している」メソッド内に実際にスローされたものだけをキャッチできます。したがって、キャッチしたい例外がメソッド内でスローされるように定義されていない場合は、上記のエラーが発生します。

于 2012-06-20T17:31:02.963 に答える