Попытка поймать исключение с помощью FileDialog

Я новичок в Java, и я создал небольшую таблицу в графическом интерфейсе, из которого я хочу открыть файл.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;
    }

большое спасибо вам.

1 ответ

Решение

Ну, в вашем случае вы можете получить исключение ввода-вывода из следующего, и многое другое.

  • Файл.txt, который вы читали, стал недоступен.
  • Некоторые процессы закрывали входной поток, который вы использовали с буферизованным ридером для чтения данных.
  • Если вы попытаетесь прочитать файл.txt, к которому у вас нет разрешения.

и т. д. А также, если вы пытались читать из неподдерживаемого формата файла, вы получите и исключение. Таким образом, для

Есть ли шанс, что я когда-нибудь получу Исключение с кодом, который я использую?

для этого ответ да. Возможно использование исключения из кода, который вы используете. Если во время выполнения произошла одна из указанных выше ситуаций, вы получите исключение. И они будут обрабатываться с помощью блоков catch.

Это не связано с вопросом, но вы можете захотеть изменить код конструктора BuddyFileManager, чтобы избежать неоднозначности.(В вашем случае существует неоднозначность в переменной filename)

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

это ключевое слово решает эту двусмысленность, определяя this.filename ссылается на атрибут имени файла в классе BuddyFileManager.

Другие вопросы по тегам