Использование Java ErrorListener на экземпляре преобразователя (Jaxp) - PullRequest
2 голосов
/ 24 ноября 2010

Подпись для преобразования метода Transformer равна void transform(Source xmlSource,Result outputTarget)throws TransformerException, т.е. указывает, что она выдает проверенное исключение типа TransformerException.
Я не могу понять, как ErrorListener подходит.
Если для ErrorListener установлено значение Transform, значит ли это, что исключение не будет выдано?
Если оно все равно выброшено, чем полезен ErrorListener?

Спасибо

1 Ответ

1 голос
/ 24 ноября 2010

Если ErrorListener не установлено, сообщение об ошибке / предупреждении перейдет на System.err, поэтому полезно перенаправить сообщения об ошибках.Приложение должно решить, должно ли оно продолжить преобразование, если произошла ошибка / предупреждение.Если соответствующий метод в ErrorListener выдает исключение, преобразование завершится с TransformerException.При fatalError преобразование будет остановлено, даже если ErrorListener::fatalError не вызывает исключение.

Обновление Сводка

  1. TransformerExceptionвыдается, когда происходит фатальная ошибка, и это не зависит от ErrorListener или от того, установлена ​​она или нет.

  2. TransformerException выбрасывается, когда исправимая ошибка илипоявляется предупреждение, ErrorListener установлено, и соответствующий метод (error или warning) выдал исключение.Таким образом, приложение может решить, что делать на рек.ошибки и предупреждения.

...