Latest Updates: gestion erreurs-exceptions RSS

  • Exception InputMismatchException

    admin 12 h 42 min on 2 octobre 2009 | 0 Permalink | Reply
    Tags: , gestion erreurs-exceptions

    Exception du type InputMismatchException
    L’exception de type “InputMismatchException” peut être levée lorsqu’un programme utilisant la fonction Scanner.nextInt(System.in) reçoit en argument une donnée dont le type est erroné. Concrètement dans le bout de code suivant par exemple :

    import java.util.Scanner;
    public class Test4 {
    	public static void main (String[] args){
    		Scanner scan = new Scanner(System.in); //création d'un objet de type scanner
    		System.out.println("Veuillez entrez un chiffre entier");
    		int RecupDuChiffre=scan.nextInt();
    		System.out.println(RecupDuChiffre);
    	}
    }
    

    On demande à l’utilisateur d’entrée un chiffre à la console. Si par exemple, ce dernier entre une lettre, ou un chiffre décimal, un symbole tel une parenthèse, bref tout type de donnée sauf un chiffre entier, la console d’Eclipse afficher ce message d’erreur, à lire de la dernière ligne vers la première :
    Exception in thread « main » java.util.InputMismatchException //Précision du type de l’erreur qui fait planter le programme.



    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source) // Il s’agit d’une erreur liée à l’utilisation de la méthode nextInt de la classe Scanner
    at Test4.main(Test4.java:6) //il y a un problème à la ligne 6 dans la méthode main.



    Eclipse nous indique que la donnée entrée fait planter le programme, et qu’il nous faut lever une exception de type InputMismatchException
    Documentation Sun: InputMismatchException

     
  • Calculer moyenne d'entiers + exemple gestion erreurs/exeptions

    admin 16 h 31 min on 19 septembre 2009 | 0 Permalink | Reply
    Tags: , , gestion erreurs-exceptions

    import java.util.Scanner;  // on appel l'objet scanner de la classe util.
    public class MoyenneChiffres { 
    
    	public static void main (String[] Args){
    		Scanner monScanner = new Scanner(System.in);
    		double somme = 0, i, moyenne;
    		String valeurEntrée;
    		for(i = 0; i<4; i++) {
    			System.out.println("Veuillez entrer un nombre entre 0 et 20.");
    			valeurEntrée = monScanner.next();  // méthode next de l'objet scanner qui renvoi le caractère suivant
    
    			if(valeurEntrée.equals("x")) { // pour quitter
    				System.out.println("Ciao !");
    				return;
    			} else if(valeurEntrée.equals("m")) { // pour afficher la moyenne ET quitter
    				break;
    			}
    
    			try {  // on utilise le bloc try catch pour gérer les erreurs
    				double d = Double.parseDouble(valeurEntrée);
    				if(d >= 0 &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; d <= 20)
    					somme += d; // rappel le signe += signifie qu'on ajoute la valeur à la valeur déjà presente dans la variable
    				else {
    					System.out.println("Vous avez entré un nombre non compris entre 0 et 20.");
    					i--;
    				}
    			} catch(NumberFormatException e) {
    				System.out.println("NumberFormatException: vous n'avez pas entré un double !");
    				i--; // pour contrer le i++
    			}
    		}
    		if(i > 0) {
    			moyenne = somme/i;
    			System.out.println("La moyenne est de : " + moyenne);
    		} else {
    			System.out.println("Pas de moyenne à calculer !");
    		}
    	}
    }
    
     
  • Manipulations sur les dates et gestion des exeptions avec le mot clef throws

    admin 14 h 15 min on 19 septembre 2009 | 0 Permalink | Reply
    Tags: , dates, , gestion erreurs-exceptions

    public class MaMontre {
    	public static void main(String[] args) {
    		Watch h1 = new Watch(); //Instanciation d'un objet watch (une montre)
    		Watch h2 = new Watch(23, 58); //Instanciation d'un objet watch, on précise nous même l'heure lors de l'instanciation de l'objet
    		//Watch h3 = new Watch(29, 588); // si on décommente, le programme doit planter (ERROR)
    
    		h1.printHour(); // minuit
    		h1.tick(); // minuit 1 minute
    		h1.printHour();
    
    		h2.printHour(); // 23:58
    		h2.tick();
    		h2.tick();
    		h2.tick();
    		h2.printHour();
    		h2.tick(60);
    		h2.printHour();
    
    		System.out.println("----------------------------------------");
    		Watch w = new Watch (23, 58);
    	    w.printHour();
    
    	    w.tick();
    	    w.printHour();
    
    	    w.tick (5);
    	    w.printHour();
    	}
    }
    
    class Watch { //création d'une classe watch, variables d'initialisations dés la ligne suivante
    	int heures;
    	int minutes;
    
    	Watch() { // par défaut : 00h00
    		heures = 0;
    		minutes = 0;
    	}
    
    	/*
    	 * throws Exception dans la signature du constructeur permet de dire
    	 * à Java que ce constructeur, lorsqu'il est appelé, peut éventuellement
    	 * lancer une nouvelle Exception
    	 *
    	 * => l'instruction throw new Exception("..."); permet de dire à Java
    	 * qu'il faut créer un objet Exception avec un String en paramètre pour
    	 * donner le motif et ensuite le throw permet de lancer l'exception
    	 */
    	Watch(int h, int m) throws Error { // heure : hh:mm
    		// petite vérification
    		if(h > 23 || h < 0 || m > 59 || m < 0) { // problème !
    			throw new Error("Erreur : heure incorrecte.");//définition d'un message d'erreur
    		}
    		heures = h;
    		minutes = m;
    	}
    
    	public void tick() {
    		if(minutes == 59) { // le cas XX : 59
    			if(heures == 23) { // le cas 23 : 59
    				heures = 0; // XX + 1 = 0
    				minutes = 0;
    			} else {
    				heures += 1; // XX + 1
    				minutes = 0;
    			}
    		} else {
    			minutes += 1; // le cas sans problème
    		}
    	}
    	public void tick(int n) {
    		// cette boucle permet de tick() n fois
    		for(int i = 0; i < n; i++) {
    			tick();
    		}
    	}
    
    	/*
    	 * on surcharge (override) la méthode toString héritée de l'objet Object (parent de tous les
    	 * objets) et on renvoie un String qui est la représentation de l'objet courant càd
    	 * les heures et les minutes de l'horloge
    	 */
    	public String toString() {
    		return heures + ":" + minutes;
    	}
    
    	public void printHour() {
    		System.out.println(this);
    	}
    
    }
    
     
  • Gestion des exceptions et erreurs avec le bloc try-catch

    admin 17 h 16 min on 1 septembre 2009 | 0 Permalink | Reply
    Tags: , gestion erreurs-exceptions

    Gérer exceptions et erreurs :

    Un programme peut connaître des problèmes d’exécution appelée « run time error ». Lorsqu’un programmeur crée un programme, il doit penser à inclure du code qui servira à gérer les exceptions éventuelles liées à son programme. Le langage Java oblige les programmeurs à inclure du code qui gère les erreurs et exceptions.

    Sinon le programme ne se compilera même pas. Les méthodes java lèvent différentes types d’exceptions si elles rencontrent une erreur dans leurs exécutions.

    Différence entre erreurs et exceptions : Une exception est une erreur d’exécution de programme. Donc une erreur est une exception.

    Gérer les erreurs d’exécution avec le bloc « try/catch » :
    En java, les exceptions et erreurs se gèrent dans le bloc « try-catch ». Le code à problème, qui pourrait potentiellement générer des erreurs, se met dans le bloc try catch.
    Exemple pratique d’utilisation du bloc try – catch :
    Dans l’exercice sur le chiffre caché http://localhost/wordpress/?p=96, on utilise le bloc try catch avec l’exception « InputMismatchException »

    </code>
    <code> try {
    System.out.print("? ");
    int nombreEntré = monScanner.nextInt();
    if(nombreEntré > RANDOM)
    System.out.println("Trop grand");
    else if(nombreEntré < RANDOM)
    System.out.println("Trop petit");
    else {
    System.out.println("Bravo ! En " + i + " coups !");
    return; // on utilise un return, pour signifier au programme qu'on a fini
    }
    System.out.println();
    } catch(InputMismatchException e) {
    System.out.println("Vous n'avez pas respecté les consignes !!!");
    return;
    

    Dans cet exemple, on désirait créer un programme qui génère un entier aléatoirement, à deviner par un utilisateur. Dans ce programme, une des erreurs possibles est que l’utilisateur entre une chaine de caractère au système plutôt qu’un entier. L’utilisateur pourrait entrer un symbole tel une parenthèse. Dans ce cas, il faut indiquer au programme comment il doit réagir vis-à-vis de cette exception.
    La balise try essaie un bout de code. Ce bout de code fonctionne, mais s’il rencontre une exception de type InputMismatchException, il affichera à la console « vous n’avez pas respecté les consignes ». Plus d’informations sur l’exeption InputMismatchException.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
esc
cancel