【问题标题】:java errorlistener use on a transformer instance(jaxp)java errorlistener 在变压器实例上使用(jaxp)
【发布时间】:2011-05-15 00:16:30
【问题描述】:

Transformer 的方法转换的签名是void transform(Source xmlSource,Result outputTarget)throws TransformerException,即指定它 抛出一个 TransformerException 类型的检查异常。
我不明白ErrorListener 是如何适应的。
如果将ErrorListener 设置为Transform 对象,这是否意味着不会抛出异常?
如果它被抛出,ErrorListener 有什么用处?

谢谢

【问题讨论】:

    标签: java transform jaxp transformer


    【解决方案1】:

    如果未设置ErrorListener,错误/警告消息将转到System.err,因此重定向错误消息很有用。如果发生错误/警告,由应用程序决定是否继续转换。如果ErrorListener 中的适当方法抛出异常,则转换将以TransformerException 退出。在fatalError 上,转换将停止,即使ErrorListener::fatalError 没有抛出异常。

    更新总结

    1. TransformerException 被抛出,当发生致命错误时,这与ErrorListener 或是否设置无关。

    2. 抛出TransformerException,当发生可恢复的错误或警告时,设置ErrorListener,对应的方法(errorwarning)已抛出异常。所以应用程序可以决定在rec上做什么。错误和警告。

    【讨论】:

    • 你的意思是TransformerException无论如何都被抛出了,但是在catch子句中你不能记录error/warning msg?不是包含在TransformerException中吗?我不确定我得到了你的答案。不管设置了errorlistener是否都会抛出Transformer异常?
    • 那么如果没有设置errorlistener,TransformerException是否只针对致命错误抛出?如果发生可恢复的错误或警告并且没有设置错误侦听器,会发生什么?
    • @user384706 a) 是的,如果ErrorListener 没有在errorwarning 上抛出异常; b) 将报告写入System.err
    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 2011-09-14
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多