import java.util.*;
public class SansException {
private static final int max = 5;
private static Random r = new Random();
public void division (int a, int b) {
System.out.println("a :"+a+" b :"+b+" a/b :"+a/b);
}
public static void main(String args[]){
SansException se = new SansException();
System.out.println("Debut");
for(int i = 0; i < 10; i++)
se.division(r.nextInt(max),r.nextInt(max));
System.out.println("Fin");
}
}
Ce programme peut produire la sortie suivante à l'écran :
Debut a :1 b :3 a/b :0 a :1 b :2 a/b :0 a :1 b :4 a/b :0 a :3 b :4 a/b :0 a :0 b :4 a/b :0 a :3 b :3 a/b :1 a :3 b :1 a/b :3 java.lang.ArithmeticException at SansException.division(SansException.java:9) at SansException.main(SansException.java:5)
La première division par zéro arrète l'exécution. Dans la nouvelle version, le programme termine normalement.
import java.util.*;
public class AvecException {
private static final int max = 5;
private static Random r = new Random();
public void division (int a, int b) {
try {
System.out.println("a :"+a+" b :"+b+" a/b :"+a/b);
}
catch (java.lang.ArithmeticException e){
System.out.println("a :"+a+" b :"+b+" a/b : impossible");
}
}
public static void main(String args[]){
AvecException ae = new AvecException();
System.out.println("Debut");
for(int i = 0; i < 10; i++)
ae.division(r.nextInt(max),r.nextInt(max));
System.out.println("Fin");
}
}
Ce programme peut produire la sortie suivante à l'écran :
Debut a :2 b :2 a/b :1 a :2 b :4 a/b :0 a :0 b :4 a/b :0 a :4 b :0 a/b : impossible a :3 b :3 a/b :1 a :2 b :0 a/b : impossible a :0 b :3 a/b :0 a :4 b :1 a/b :4 a :0 b :4 a/b :0 a :3 b :2 a/b :1 Fin