TP N° 9 : Exceptions Langage JAVA - Toubkal-it

publicité
TP N° 9 : Exceptions
Langage JAVA
Exercice : 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.
Note : la classe InputMismatchException appartient au package java.util.
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void saisieCorrect() throws InputMismatchException{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(n);
}
public static void main(String[] args) {
do{
try {
System.out.println("Veuillez saisir une entier :");
saisieCorrect();
break;
} catch (InputMismatchException e) {
System.out.println("erreur de saisi");
}
}while(true);
}
}
Page 1
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.
Note : On aurait pu utiliser l'exception prédéfinie IllegalArgumentException pour vérifier que
l'entier saisi est supérieur à 10.
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void saisieCorrect() throws InputMismatchException, IllegalArgumentException{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n < 10) throw new IllegalArgumentException();
System.out.println(n);
}
public static void main(String[] args) {
do{
try {
System.out.println("Veuillez saisir une entier :");
saisieCorrect();
break;
} catch (InputMismatchException e) {
System.out.println("Saisi incorrect");
} catch (IllegalArgumentException e) {
System.out.println("le nombre saisi < 10");
}
}while(true);
}
}
Solution 2 :
public class MonException extends Exception {
private String msg = "La valeur est infénieure à 10";
public MonException() {
}
public String getMsg() {
return msg;
}
}
Page 2
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void saisieCorrect() throws InputMismatchException, MonException{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n < 10) throw new MonException();
System.out.println(n);
}
public static void main(String[] args) {
do{
try {
System.out.println("Veuillez saisir une entier :");
saisieCorrect();
break;
} catch (InputMismatchException e) {
System.out.println("Format incorrecte");
} catch (MonException e) {
System.out.println(e.getMsg());
}
}while(true);
}
}
Page 3
Téléchargement