IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Bloc catch non atteint


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut Bloc catch non atteint
    Bonjour, j' essaie de parser un fichier xml avec jakarta Digester et ça marche assez bien. Je voudrais aussi gérer les erreurs et pour ça j' ai introduit une petite erreur dans mon xml. Digester me renvoie une SAXParseException, mais je ne passe pas dans le catch... pourquoi ?
    un extrait de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    //classe CVDigester
    public OnlineCV cvParser (String fileName){
    	Digester digester = new Digester();
    	OnlineCV cv = null;
            File inputFile = new File( fileName );
    //blablabla...
    		try {
    			cv = (OnlineCV)digester.parse( inputFile );
    		}
                    catch(org.xml.sax.SAXParseException e) {
    			System.out.println("erreur de parsing pour le fichier"+fileName);
    			}
    		catch(org.xml.sax.SAXException e) {
    			System.out.println("erreur de parsing (2) pour le fichier "+fileName);
    			}
    		catch (Exception e){
    			System.out.println("plop");
    		}
     
    		System.out.println("parsing terminé !");
    		return cv;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //main
    	public static void main(String args[]){
    		CVDigester cvDigester = new CVDigester();
    		OnlineCV cvMain;
    		cvMain = cvDigester.cvParser((String)args[0]);
    ...

    Et à l' exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    GRAVE: Parse Error at line 21 column 27: Attribute "nom_usage" is required and must be specified for element type "etat_civil".
    org.xml.sax.SAXParseException: Attribute "nom_usage" is required and must be specified for element type "etat_civil".
    	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.addDTDDefaultAttrsAndValidate(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    	at org.apache.commons.digester.Digester.parse(Digester.java:1728)
    	at cvParser.CVDigester.cvParser(CVDigester.java:430)
    	at cvParser.MainTest.main(MainTest.java:15)
     
    parsing terminé !
    Merci d' avance

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Bonjour,

    Tu ne passes pas par le bloc catch car une Error survient en début.

    Pour plus d'informations tu peux regarder cet article : Les exceptions et les bonnes pratiques

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut
    ok merci, j' ai lu l' article et appris quelques trucs.
    J' ai essayé de catcher l' error mais ça ne marche pas non plus (oui je sais c' est déconseillé ).

    En fait mon but est le suivant : j' utilise Digester comme parser validant, et je voudrais faire quelque chose si la validation marche, et autre chose sinon. Ici ça ne marche pas car le xml ne correspond pas à sa dtd (je l' ai fait exprès). Il me lance donc cette erreur que je n' arrive pas à attraper

    Quelqu' un a-t-il une solution ?

    PS évidement le titre du sujet ne colle plus trop au problème... dois-je poster une nouvelle discussion ?

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Je ne suis pas d'accord avec l'analyse de afrikha : l'erreur générée est une SAXParseException, qui n'est pas une exception Error au sens java ; le ERROR est un simple commentaire (probablement un log).

    Pour moi, au vu de ton code, le catch devrait être exécuté, et il doit y avoir une autre erreur quelque part. Source et trace ne correspondent pas ? Oubli de recompiler ? Classe parasite d'un ancien projet ? Classpath foireux ? Etc.

  5. #5
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par gifffftane
    Je ne suis pas d'accord avec l'analyse de afrika : l'erreur générée est une SAXParseException, qui n'est pas une exception Error au sens java ; le ERROR est un simple commentaire (probablement un log).
    C'est possible en effet, j'avais pas pensé au fait que le logger inscrive Error, mais dans ce cas je n'ai aucune idée sur le pourquoi du non passage par les blocs catch

    P.S : c'est afrikha , merci


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut
    Eh bien merci pour vos réponses
    Au moment où je poste je n' ai toujours pas résolu ce problème, je vais continuer à chercher, explorer les quelques pistes que gifffftane a proposées.

    EDIT : bon ben j' ai copié toutes mes sources, refait un nouveau projet avec, et ça marche ... étrange mais bon au moins je peux traiter mes exceptions maintenant
    Merci encore !!!

    --> RESOLU

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur 91 bloc With non definie
    Par popofpopof dans le forum Access
    Réponses: 11
    Dernier message: 16/08/2007, 07h27
  2. Réponses: 11
    Dernier message: 12/06/2007, 09h26
  3. Variable objet ou variable d'un bloc With non définie.
    Par paradeofphp dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/05/2007, 20h41
  4. Réponses: 13
    Dernier message: 01/06/2006, 17h20
  5. [C#] Try / Catch non traité
    Par Oberown dans le forum C#
    Réponses: 3
    Dernier message: 12/12/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo