是否有可能在java中捕获致命的xml异常?

时间:2013-10-20 10:45:08

标签: java xml dom

当我执行DOM XML Schema验证时,如果我故意不正确的测试文件中存在语法错误,则会收到此错误。

[Fatal Error] :10:3: The element type "gizmos" must be terminated by the matching end-tag "</gizmos>".

但是,我想抓住这个,以便它不会给出红色致命错误警告,而是一条消息说“你的xml无效”。有可能吗?

谢谢,

4 个答案:

答案 0 :(得分:2)

I believe you can catch Throwable  to handle your scenario

     try{
     ....
     ....
     ....
     }catch (Exception e) {
      e.printStackTrace();
     }catch (Throwable t) {
      t.printStackTrace();
    } 

答案 1 :(得分:1)

无法捕获错误,只能捕获异常。

根据Java Docs:

  

错误是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题。大多数此类错误都是异常情况。 ThreadDeath错误,虽然是“正常”条件,但也是Error的子类,因为大多数应用程序不应该尝试捕获它。   一个方法不需要在其throws子句中声明在执行方法期间可能抛出但未捕获的任何Error类,因为这些错误是永远不应发生的异常情况。也就是说,出于编译时异常检查的目的,Error及其子类被视为未经检查的异常。

但是,你仍然可以抓住Throwable来捕获任何错误。但不建议这样做。

catch (Throwable e) {
  //e.printStackTrace();
}

答案 2 :(得分:1)

您可以捕获Throwable(错误扩展为Throwable):

try {
       //...
} catch(Throwable e) {
        //...
}

请注意,通常建议不要这样做。您可以在此处详细了解:When to catch java.lang.Error?

答案 3 :(得分:1)

如果您使用的是JAXP验证API,则可以指定ErrorHandler来接收错误通知。通过此操作,您可以更改显示的消息及其显示位置。