-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);
        }
    }

但更有用的是明确并设置一个字段。

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 块必须在方法内部。其次,BufferedReaderandFileReaderIOException也抛出了文件权限。

所以:

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 回答