基本尝试捕获问题

时间:2012-06-20 17:25:40

标签: java try-catch

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 个答案:

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

答案 1 :(得分:1)

我认为你需要将它放在方法声明行中。

throws FileNotFoundException

答案 2 :(得分:1)

首先,try-catch块必须在方法内。其次,BufferedReaderFileReader类也会为文件权限抛出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添加到方法声明中,以用于代码可能抛出的任何其他异常。

答案 3 :(得分:1)

使用try / catch,您只能捕获“正在尝试”的方法中实际抛出的内容。因此,如果您要捕获的异常未定义为抛出该方法,则会遇到上述错误。

相关问题