多个 catch 子句,每个子句都有自己的消息框
multiple catch clauses with each having its own message box
有人能告诉我为什么即使异常是 IO- 或 JDOMException 也只显示 catch 子句 FileNotFoundException 中的消息框吗?为什么 java 会忽略这些 catch 子句中的相关消息框?
谢谢!
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();
}
FileNotFoundException
是 in fact, an IOException
(它是一个子类)。因此,因为您首先指定了 FileNotFound catch 块,所以如果未找到该文件并抛出该异常,它会首先被捕获。
一旦异常被该 catch 块处理,try/catch 块完成,您的代码继续。
注意 catch 块不会 'cascade'...完成第一个 catch 块不会启动下一个 catch 块.....只有第一个可以处理异常的 catch 块会被执行。
因此,如果存在未找到 FileNot 的 IOException,则第二个 catch 块将 运行。
如果 XML 解析或文档结构出现异常,则 JDOMException 处理程序将 运行.
只有其中一个会 运行 出现异常时...这就是 Java 的工作方式。
有人能告诉我为什么即使异常是 IO- 或 JDOMException 也只显示 catch 子句 FileNotFoundException 中的消息框吗?为什么 java 会忽略这些 catch 子句中的相关消息框? 谢谢!
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();
}
FileNotFoundException
是 in fact, an IOException
(它是一个子类)。因此,因为您首先指定了 FileNotFound catch 块,所以如果未找到该文件并抛出该异常,它会首先被捕获。
一旦异常被该 catch 块处理,try/catch 块完成,您的代码继续。
注意 catch 块不会 'cascade'...完成第一个 catch 块不会启动下一个 catch 块.....只有第一个可以处理异常的 catch 块会被执行。
因此,如果存在未找到 FileNot 的 IOException,则第二个 catch 块将 运行。
如果 XML 解析或文档结构出现异常,则 JDOMException 处理程序将 运行.
只有其中一个会 运行 出现异常时...这就是 Java 的工作方式。