多个catch子句,每个子句都有自己的消息框

时间:2015-11-06 21:39:56

标签: exception jdom

有人可以告诉我为什么即使异常是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();
}

1 个答案:

答案 0 :(得分:3)

FileNotFoundException是,in fact, an IOException(它是一个子类)。因此,因为您首先指定FileNotFound catch块,如果找不到该文件,并且抛出该异常,则首先捕获它。

一旦该catch块处理了异常,try / catch块就会完成,你的代码就会继续运行。

请注意,catch块不会级联' ....完成第一个catch块不会使下一个启动.....只执行第一个可以处理异常的catch块

因此,如果发现IOException并非找到FileNot,则第二个catch块将会运行。

如果XML解析中存在异常,或者文档结构存在异常,则JDOMException处理程序将运行。

只有其中一个会在出现异常时才会运行......这就像Java的工作方式一样。