ED n°4
Soit le programme Java suivant:
import java.util.Scanner;
public class Arret {
// =============================================================
public static int saisir(){
int x ;
System.out.println("Entrez un entier positif : ");
Scanner in = new Scanner(System.in);
x = in.nextInt();
if (x < 0){
throw new Stop2();
}
if (x == 0) {
throw new Stop();
}
return x;
}
// =============================================================
public static int calculer (){
int x1 = 0;
int x2 = 1000;
x1 = saisir();
try {
x2 = saisir();
}catch (Stop e){
System.out.println("recupere une exception Stop");
}
return x1+x2;
}
// =============================================================
public static void main(String [] args) {
int y = 99999;
System.out.println("Debut main");
try {
y = calculer();
System.out.println("main OK");
} catch (Stop e){
System.out.println("main PB1");
} catch (Stop2 e){
System.out.println("main PB2");
}
System.out.println("le resultat calcule vaut = " + y);
System.out.println("main FIN");
}
}
class Stop extends RuntimeException {}
class Stop2 extends RuntimeException {}
Question 1
Exécuter ce programme pour différents couples d'entiers saisis au clavier par exemple : 1 puis 3, 1
puis 0, 0 puis 1, -1 puis 1, 1puis -1
Expliquer pour chaque exécution les affichages constatés.
Question 2
Transformer la déclaration de Stop en class Stop extends Exception{};, qu'observez
vous ? Comment corriger cette erreur ?
5