有人可以告诉我为什么即使异常是IO或JDOMException,只有catch子句FileNotFoundException中的消息框出现?为什么java会忽略这些catch子句中的相关消息框? THX!
public void SetWurzel() {
builder = new SAXBuilder();
xmlFile = new File(Pfad);
try {
document = (Document) builder.build(xmlFile);
} catch (FileNotFoundException e) {
JOptionPane
.showMessageDialog(
null,
"Die Datei konnte nicht gefunden werden. Bitte überprüfen Sie den Pfad"
+ " auf Korrektheit.");
} catch (IOException e) {
JOptionPane
.showMessageDialog(
null,
"Bitte prüfen Sie die Zugriffsrechte auf Ihre Datei und geben "
+ "Sie diese gegebenenfalls frei. ");
} catch (JDOMException e) {
JOptionPane
.showMessageDialog(
null,
"Bitte Prüfen Sie die Struktur der einzulesenden XMLDatei auf Fehlern"
+ " und fehlende Elemente.");
}
Wurzel = document.getRootElement();
}
答案 0 :(得分:3)
FileNotFoundException
是,in fact, an IOException
(它是一个子类)。因此,因为您首先指定FileNotFound catch块,如果找不到该文件,并且抛出该异常,则首先捕获它。
一旦该catch块处理了异常,try / catch块就会完成,你的代码就会继续运行。
请注意,catch块不会级联' ....完成第一个catch块不会使下一个启动.....只执行第一个可以处理异常的catch块
因此,如果发现IOException并非找到FileNot,则第二个catch块将会运行。
如果XML解析中存在异常,或者文档结构存在异常,则JDOMException处理程序将运行。
只有其中一个会在出现异常时才会运行......这就像Java的工作方式一样。