Problème try catch sous JAVA
Résolu/Fermé
A voir également:
- Problème try catch sous JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
2 réponses
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
4 mai 2012 à 17:15
4 mai 2012 à 17:15
Bon en fait c'est la même erreur que celle que je vois souvent, mais comme elle est présenté différemment, je ne l'ai pas trouvé tout de suite ^^
En fait quand on fait nextInt, et qu'on appuie sur Entrée, le \n reste coincé dans le System.in et il faut l'évacuer manuellement, sinon à chaque essai, il va voir un \n, s'arrêter juste avant (et donc récupérer une chaîne vide) qui génère l'exception et recommence ad vitam æternam...
Pour corriger cela il faut donc vider la ligne avec un nextLine, et c'est là où j'ai eu un peu mal, car il faut rajouter cette instruction dans un bloc finally de sorte qu'elle soit exécuté que cela plante ou non !
Remarque : plutôt que d'utiliser des traitements d'exceptions, il est bien plus propre de faire comme ça :
En fait quand on fait nextInt, et qu'on appuie sur Entrée, le \n reste coincé dans le System.in et il faut l'évacuer manuellement, sinon à chaque essai, il va voir un \n, s'arrêter juste avant (et donc récupérer une chaîne vide) qui génère l'exception et recommence ad vitam æternam...
Pour corriger cela il faut donc vider la ligne avec un nextLine, et c'est là où j'ai eu un peu mal, car il faut rajouter cette instruction dans un bloc finally de sorte qu'elle soit exécuté que cela plante ou non !
System.out.print("Entrez une valeur : "); boolean continuer=true; while (continuer) { try { c=sc.nextInt(); continuer = false; } catch(InputMismatchException e) { System.out.print("Entrez un entier : "); } finally { sc.nextLine(); } }
Remarque : plutôt que d'utiliser des traitements d'exceptions, il est bien plus propre de faire comme ça :
System.out.print("Entrez une valeur : "); while (!sc.hasNextInt()) { sc.nextLine(); System.out.print("Entrez un Entier : "); } int c = sc.nextInt();
SLT
PAS D'ERREUR SI ON ECRIT: try{} catch(){}; //point virgule après l'instruction.
PAS D'ERREUR SI ON ECRIT: try{} catch(){}; //point virgule après l'instruction.
4 mai 2012 à 17:54
j'ai remarqué le Finally qd je clique sur l'erreur mais j'ai pas réagi !
merci pour tout.