尝试使用FileDialog捕获异常

我是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>();



非常感谢你。


慕妹3242003
浏览 125回答 1
1回答

MMTTMM

好吧,根据您的情况,您可以从以下内容中获取IO异常,以及更多。您正在阅读的.txt文件不可用。某些进程关闭了您使用缓冲读取器读取数据的输入流。如果您尝试读取没有权限的.txt文件。等等。此外,如果您尝试从不受支持的文件格式中读取内容,则将获得和异常。因此对于我有没有机会得到我正在使用的代码的异常?为此,答案是肯定的。您正在使用的代码可能会出现异常。如果在运行时发生以上情况之一,您将得到一个异常。它们将由捕获块处理。这与问题无关,但您可能需要更改BuddyFileManager构造函数代码以避免歧义。(在这种情况下,变量文件名存在歧义)public&nbsp;BuddyFileManager(String&nbsp;filename)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.fileName&nbsp;=&nbsp;filename; &nbsp;&nbsp;&nbsp;&nbsp;}此关键字通过this.filename在BuddyFileManager类中定义引用文件名属性来清楚地解决此歧义。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java