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