Попытка поймать исключение с помощью 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.