Problème de compréhension avec les exeptions
Résolu
jerome38920
Messages postés
17
Statut
Membre
-
jerome38920 Messages postés 17 Statut Membre -
jerome38920 Messages postés 17 Statut Membre -
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
- 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...