Java 基本尝试捕获问题

Java 基本尝试捕获问题,java,try-catch,Java,Try Catch,您好,我有一个关于try-and-catch的非常基本的问题,我得到一个错误,说“未报告的异常”。必须被抓住或宣布被抛出。有什么想法吗 解决了 我认为您需要将其放在方法声明行中 package mp1practice; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.uti

您好,我有一个关于try-and-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块必须位于方法内部。其次,BufferedReader和FileReader类也为文件权限抛出IOException

因此:


或者,对于代码可能引发的任何其他异常,您可以将throws Exception添加到方法声明中。

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

最简单的更改是将代码放在初始化器块中

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.
    }
}
但更有用的是expicit和设置字段

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

Try-and-catch必须在函数内部,而不是直接在类中。请更新你的代码。它在抱怨哪一个异常,在哪一行,你抓住了吗?@sebi,我把这一行放在一个函数下…解决了,THX@Nidhin_toms您编辑的代码应该可以编译。@assylias没有,但应该可以;除了代码中的FileNotFoundException之外,没有任何东西会抛出IOException。类不能抛出异常。我在编写它之后意识到了这一点。我的意思是用主要的方法或者他需要的任何方法。谢谢你抓住我的错误。
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"));
    }