为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用FileDialog捕获异常

尝试使用FileDialog捕获异常

慕妹3242003 2021-05-14 14:11:19
我是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>();非常感谢你。
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

好吧,根据您的情况,您可以从以下内容中获取IO异常,以及更多。

  • 您正在阅读的.txt文件不可用。

  • 某些进程关闭了您使用缓冲读取器读取数据的输入流。

  • 如果您尝试读取没有权限的.txt文件。

等等。此外,如果您尝试从不受支持的文件格式中读取内容,则将获得和异常。因此对于

我有没有机会得到我正在使用的代码的异常?

为此,答案是肯定的。您正在使用的代码可能会出现异常。如果在运行时发生以上情况之一,您将得到一个异常。它们将由捕获块处理。

这与问题无关,但您可能需要更改BuddyFileManager构造函数代码以避免歧义。(在这种情况下,变量文件名存在歧义)

public BuddyFileManager(String filename) {        
     this.fileName = filename;
    }

此关键字通过this.filename在BuddyFileManager类中定义引用文件名属性来清楚地解决此歧义。


查看完整回答
反对 回复 2021-05-19
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信