The signature for method transform of Transformer
is void transform(Source xmlSource,Result outputTarget)throws TransformerException
i.e. specifies that it
throws a checked exception of type TransformerException.
I can not understand how ErrorListener
fits in.
If an ErrorListener
is set to Transform
object does this mean that the exception will not be thrown?
If it is thrown anyway how is an ErrorListener useful?
Thanks
If ErrorListener
is not set, the error/warning message will go to System.err
, so it is useful to redirect error messages. It is up to application to decide should it continue transformation, if an error/warning occured. If the appropriate method in ErrorListener
throws an exception, the transformation will exit with TransformerException
. On fatalError
transformation will be stopped, even if ErrorListener::fatalError
doesn't throw an exception.
Update Summary
TransformerException
is thrown, when a fatal error occurs, and this doesn't depend on ErrorListener
or whether it is set or not.
TransformerException
is thrown, when a recoverable error or a warning occurs, the ErrorListener
is set, and the corresponding method (error
or warning
) has thrown an exception. So the application can decide what to do on rec. errors and warnings.