Problème de compréhension avec les exeptions
Résolu
jerome38920
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
jerome38920 Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
jerome38920 Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un problème concernant les initialisation avec les utilisations des exceptions.
j'ai besoin d'utiliser un variable de type "Test t1" tout au long de ma méthode, cependant je dois l'initialiser dans un try{} catch]().
comme dans l'exemple qui suit:
Mon problème si situe au niveau de l'initialisation de t1, j'ai déjà initialise t1 dans mon premier try{} catch(), pourquoi est ce que je dois encore le réinitialiser dans mon second try catch?
Merci de vos réponse.
j'ai un problème concernant les initialisation avec les utilisations des exceptions.
j'ai besoin d'utiliser un variable de type "Test t1" tout au long de ma méthode, cependant je dois l'initialiser dans un try{} catch]().
comme dans l'exemple qui suit:
Test t1; System.out.println("*** PREPARER UN TEST ***"); try{ do{ System.out.print("Nom du test : "); nomText=Clavier.lireString(); if(nomText.length()<5 || nomText.length()>50){ System.out.println("ERREUR ! Entrez un nom contenant entre 5 et 50 caracteres. Recommencez..."); } }while(nomText.length()<5 || nomText.length()>50 ); // a mettre en cst globale t1 = new Test(nomText); //1er initialisation de t1 }catch(TestInvalideException e){ System.out.print("pas mis de nom ou c'est null :"); } try{ for(int i=0 ; i<nbrQuest ; i++){ do{ System.out.println("Enonce :"); enonce=Clavier.lireString(); if(enonce.length()<10 || enonce.length()>120){ System.out.println("ERREUR ! L'enonce doit contenir entre 10 et 120 caracteres. Recommencez..."); } }while(enonce.length()<10 || enonce.length()>120); t1.ajouterQuestion(new Question("Enonce 1", new String[]{"choix1Q1", "choix2Q1", "choix3Q1"}, 1, 0)); //message d'erreur: variable t1 might not have been // initialized } }catch(TestInvalideException e){ System.out.print("Nom du test :"); }catch(QuestionInvalideException e){ System.out.print("Nom du test :"); }
Mon problème si situe au niveau de l'initialisation de t1, j'ai déjà initialise t1 dans mon premier try{} catch(), pourquoi est ce que je dois encore le réinitialiser dans mon second try catch?
Merci de vos réponse.
A voir également:
- Problème de compréhension avec les exeptions
- Lecture compréhension cm1 cm2 pdf - Télécharger - Éducatifs
- Problème l'exeption exeption logicielle inconnue - Forum Logiciels
1 réponse
Bonjour,
Si
Donc tu ne devrais pas pouvoir faire
En effet ici ta première question n'ayant pas été résolue, partir sur la suite serait erroné.
Remarque : il ne faut pas perdre les exceptions.
Il faudrait au minimum faire un
Si
t1 = new Test(nomText);provoque une exception, t1 ne sera pas initialisée.
Donc tu ne devrais pas pouvoir faire
t1.ajouterQuestion()dans ce cas, et Java t'en empêche.
En effet ici ta première question n'ayant pas été résolue, partir sur la suite serait erroné.
Remarque : il ne faut pas perdre les exceptions.
"pas mis de nom ou c'est null :"ne permet pas de connaître le détail de la
TestInvalideException eque tu as catché.
Il faudrait au minimum faire un
"pas mis de nom ou c'est null :" + e(pour bénéficier du e.toString) même si un
e.printStackTrace()serait plus complet.
Et s'il en était capable il te dirait que le try/catch est inutile et te demanderait de l'enlever.
Java voit juste que la méthode peut terminer de deux manières différentes (avec ou sans exception) et que dans un des deux cas la variable ne sera pas initialisée...