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的非常基本的问题,我收到错误说未报告的异常。必须被抓住或宣布被抛出。有什么想法吗?
解决!!
答案 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块必须在方法内。其次,BufferedReader
和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
添加到方法声明中,以用于代码可能抛出的任何其他异常。
答案 3 :(得分:1)
使用try / catch,您只能捕获“正在尝试”的方法中实际抛出的内容。因此,如果您要捕获的异常未定义为抛出该方法,则会遇到上述错误。