Contrôler la saisie des entiers avec les exceptions
Objectifs :
- Découvrir le mécanisme de la gestion des exceptions.
- Clause try, catch, finally.
- Clause throw, throws.
Énoncé : Saisie correcte
On veut écrire la fonction saisieCorrecte qui permet de saisir correctement un entier. Si l'utilisateur saisit une donnée dont le format n'est pas celui d'un entier, le programme lève l'exception InputMismatchException.
Question 1
La fonction devra traiter cette erreur en fournissant une solution alternative. Un message d'erreur sera affiché avec la proposition d'effectuer une nouvelle saisie.
La classe InputMismatchException appartient au package java.util.
Donnez un entier :
java
Erreur de saisi
Fin
Donnez un entier :
-7
L'entier saisi est : -7
Fin
Question 2
L'entier saisi doit être impérativement supérieur à 10.
On demande donc de créer une classe d'exception adaptée à cette erreur, puis de modifier le programme afin de traiter ce cas d'erreur.
On aurait pu utiliser l'exception prédéfinie IllegalArgumentException pour vérifier que l'entier saisi est supérieur à 10.
Donnez un entier :
java
Erreur de saisi
Donnez un entier :
4
valeur < 10
Donnez un entier :
34
L'entier saisi est : 34
Question 1 :
import java.util.InputMismatchException; import java.util.Scanner; public class Question1 { public static void saisieCorrecte() { Scanner sc = new Scanner(System.in); System.out.println("Donnez un entier : "); int n = sc.nextInt(); System.out.println("L'entier saisi est : " + n); } public static void main(String[] args) { while (true) { try { saisieCorrecte(); break; } catch (InputMismatchException e) { System.out.println("Erreur de saisi"); } finally { System.out.println("Fin"); } } } }
Question 2 : Méthode en utilisant la classe IllegalArgumentException
import java.util.InputMismatchException; import java.util.Scanner; public class Question2 { public static void saisieCorrecte() throws IllegalArgumentException { Scanner sc = new Scanner(System.in); System.out.println("Donnez un entier : "); int n = sc.nextInt(); if (n < 10) throw new IllegalArgumentException("valeur < 10"); System.out.println("L'entier saisi est : " + n); } public static void main(String[] args) { while (true) { try { saisieCorrecte(); break; } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } catch (InputMismatchException e) { System.out.println("Erreur de saisi"); } } } }
Question 2 : En utilisant une classe d'exception personnalisée.
Classe d'exception personnalisée
public class SaisiException extends Exception { public SaisiException(String arg0) { super(arg0); }
}
Utilisation
import java.util.InputMismatchException; import java.util.Scanner; public class Question2_2 { public static void saisieCorrecte() throws SaisiException { Scanner sc = new Scanner(System.in); System.out.println("Donnez un entier : "); int n = sc.nextInt(); if (n < 10) throw new SaisiException("valeur < 10"); System.out.println("L'entier saisi est : " + n); } public static void main(String[] args) { while (true) { try { saisieCorrecte(); break; } catch (SaisiException e) { System.out.println(e.getMessage()); } catch (InputMismatchException e) { System.out.println("Erreur de saisi"); } } } }
Sélectionnez le fichier à afficher.
|