public FileReader() throws FileNotFoundException {
//create fileChooser
JFileChooser chooser = new JFileChooser();
//open fileChooser
int returnValue = chooser.showOpenDialog(new JFrame());
try {
if (returnValue == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
}
} catch (FileNotFoundException e) {
}
}
我正在编写一个程序来读取文本文件并将其放入一个字符串(单词)数组中。这只是程序的文件阅读器,当我尝试从代码的另一部分调用该方法时,它给了我一个错误。任何想法将不胜感激;它可能是一个简单的修复,我似乎无法找到它。
这是错误:
未报告的异常FileNotFoundException;必须被抓住或宣布被抛出
答案 0 :(得分:1)
您已将构造函数声明为抛出已检查的异常:
public FileReader() throws FileNotFoundException
在调用此构造函数的任何地方,您必须声明从该方法抛出它,例如
public static void main(String[] args) throws FileNotFoundException {
new FileReader();
}
或抓住并处理它,例如
public static void main(String[] args) {
try {
new FileReader();
} catch (FileNotFoundException e) {
// Handle e.
}
}
或者,如果FileReader()
中没有任何内容引发未被捕获的FileNotFoundException
(就像在您的代码中,FileNotFoundException
被捕获并被吞并),请从{{throws FileNotFoundException
移除FileReader()
1}},允许例如
public static void main(String[] args) {
new FileReader();
}
答案 1 :(得分:1)
你在这里通过检查异常变得有点困难。主要的是检查FileNotFoundException
,它必须:
try...catch
声明,或throws
声明抛出。你不通常想同时做这两件事,你现在就是这样。
作为进一步的建议,您也不想做以下任何一项:
所以我个人的建议是抓住异常并处理它......
public FileReader() {
//create fileChooser
JFileChooser chooser = new JFileChooser();
//open fileChooser
int returnValue = chooser.showOpenDialog(new JFrame());
try {
if (returnValue == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
...但除非我正在查看错误的库,I don't see anywhere where a FileNotFoundException
is even thrown on JFileChooser
!这样可以使您的代码足够简单 - 在此时不要打扰* try...catch
。
*:你实际上有删除它,因为它是一个编译错误,可以捕获一个永不抛出的已检查异常。