我是Java的新手,我在GUI内创建了一个小表,我想从中打开.txt文件,以便用文件的内容填充表。我试图从我的老师的一个示例中复制代码,但是到目前为止,我还没有设法“捕获异常”。这是我的代码:
buddyLoadFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileDialog fd = new FileDialog(HauptFenster.this,
"Open File", FileDialog.LOAD);
fd.setDirectory(".");
fd.setVisible(true);
try {
String filename = fd.getDirectory()
+ fd.getFile();
buddyFileManager = new BuddyFileManager(filename);
buddyTableModel.setBuddies(buddyFileManager.load());
buddyTableModel.fireTableDataChanged();
}
catch (IOException ex) {
JOptionPane.showMessageDialog(
HauptFenster.this,
"error loading file", "Error",
JOptionPane.ERROR_MESSAGE);
}
catch (Exception ex) {
JOptionPane.showMessageDialog(
HauptFenster.this,
"invalid format of file.",
"Error", JOptionPane.ERROR_MESSAGE);
}
}
});
无论我打开哪种文件,程序都会使用打开的文件中的字符串成功填充表。我有没有机会得到我正在使用的代码的异常?
这是我的FileManager(如果需要的话):
public BuddyFileManager(String filename) {
fileName = filename;
}
public List<Buddies> load() throws IOException {
BufferedReader br = new BufferedReader(new FileReader(fileName));
StreamTokenizer strTokenizer = new StreamTokenizer(br);
strTokenizer.whitespaceChars(',', ',');
List<Buddies> buddyListe = new ArrayList<Buddies>();
while (strTokenizer.nextToken() != StreamTokenizer.TT_EOF) {
Buddies buddy = new Buddies();
buddy.setName(strTokenizer.sval);
strTokenizer.nextToken();
buddy.setAlter(strTokenizer.nval);
strTokenizer.nextToken();
buddy.setLuegenindex(strTokenizer.nval);
buddyListe.add(buddy);
}
br.close();
return buddyListe;
}
非常感谢您。
答案 0 :(得分:0)
好吧,在您的情况下,您可以从以下内容中获取IO异常,以及更多信息。
等而且,如果您尝试从不支持的文件格式中进行读取,则将获得和异常。所以
我是否有机会获得代码异常 使用吗?
为此,答案是是。您正在使用的代码可能会出现异常。如果在运行时发生以上情况之一,您将获得异常。它们将由catch块处理。
这与问题无关,但是您可能需要更改BuddyFileManager构造函数代码以避免歧义。(如果您在变量文件名中存在歧义)
mValue
此关键字通过定义public BuddyFileManager(String filename) {
this.fileName = filename;
}
引用BuddyFileManager类中的filename属性来清楚地解决此歧义。