当我进行 DOM XML 模式验证时,当我故意不正确的测试文件中存在语法错误时,我会收到此错误。
[Fatal Error] :10:3: The element type "gizmos" must be terminated by the matching end-tag "</gizmos>".
但是,我想抓住它,这样它就不会给出红色的致命错误警告,而是一条消息,上面写着“你的 xml 无效”。可能吗?
谢谢,
I believe you can catch Throwable to handle your scenario
try{
....
....
....
}catch (Exception e) {
e.printStackTrace();
}catch (Throwable t) {
t.printStackTrace();
}
如果您使用的是 JAXP 验证 API,那么您可以指定一个 ErrorHandler 来接收错误通知。有了这个,您可以更改显示的消息以及显示的位置。
您可以捕获 Throwable(错误扩展 Throwable):
try {
//...
} catch(Throwable e) {
//...
}
请注意,通常建议不要这样做。您可以在此处阅读更多相关信息:何时捕获 java.lang.Error?.
不能捕获错误,只能捕获异常。
根据 Java 文档:
Error 是 Throwable 的子类,表示合理的应用程序不应尝试捕获的严重问题。大多数此类错误是异常情况。ThreadDeath 错误虽然是“正常”情况,但也是 Error 的子类,因为大多数应用程序不应该尝试捕获它。方法不需要在其 throws 子句中声明任何可能在方法执行期间抛出但未被捕获的 Error 子类,因为这些错误是不应该发生的异常情况。也就是说,为了对异常进行编译时检查,Error 及其子类被视为未经检查的异常。
但是,您仍然可以捕获 Throwable 来捕获任何错误。但不建议这样做。
catch (Throwable e) {
//e.printStackTrace();
}