2010-11-24 38 views
2

La signature pour la transformation de méthode de Transformer est void transform(Source xmlSource,Result outputTarget)throws TransformerException, c'est-à-dire que lève une exception vérifiée de type TransformerException.
Je ne peux pas comprendre comment ErrorListener s'inscrit.
Si un ErrorListener est réglé sur Transform objet cela signifie que l'exception ne sera pas levée?
Si elle est lancée de toute façon, en quoi un ErrorListener est-il utile?java errorlistener utilisation sur une instance de transformateur (jaxp)

Merci

Répondre

1

Si ErrorListener n'est pas réglé, le message d'erreur/avertissement iront à System.err, il est donc utile de rediriger les messages d'erreur. Il appartient à l'application de décider si elle doit continuer la transformation, si une erreur/un avertissement s'est produit. Si la méthode appropriée dans ErrorListener déclenche une exception, la transformation se termine par TransformerException. Sur fatalError la transformation sera arrêtée, même si ErrorListener::fatalError ne déclenche pas une exception.

Mise à jour Résumé

  1. TransformerException est jeté, lorsqu'une erreur fatale se produit, et cela ne dépend pas de ErrorListener ou si elle est définie ou non.

  2. TransformerException est jeté, quand une erreur récupérable ou un avertissement se produit, le ErrorListener est réglé, et le procédé correspondant (error ou warning) a jeté une exception. Ainsi, l'application peut décider quoi faire sur rec. erreurs et avertissements.

+0

Vous voulez dire que TransformerException est levée de toute façon, mais dans la clause catch, vous ne pouvez pas enregistrer le message d'erreur/avertissement? Cela n'est-il pas inclus dans TransformerException? Je ne suis pas sûr d'avoir reçu votre réponse. L'exception Transformer est-elle levée indépendamment de la définition de errorlist? – Cratylus

+0

@ user384706 voir ma mise à jour. – khachik

+0

Donc, si aucun errorlistener n'est défini, TransformerException est renvoyé uniquement pour les erreurs fatales? Et que se passe-t-il si une erreur récupérable ou un avertissement se produit et qu'aucun errorlistener n'est défini? – Cratylus