IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Exceptions throws throw


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut Exceptions throws throw
    Bonjour ,

    J aurais quelques questions par rapport aux exceptions.

    Lorsqu' une méthode est succeptible de lever une exception , dois je obligatoirement mentionné throws dans son en en tête? Si je déclare throws dois je lancer l exception avec throw new Exception()??

    merci

  2. #2
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut
    hello,

    oui tu es obligé de déclarer une exception dans l'entête via un "throws" même si tu la propages. En tout cas pour les exceptions vérifiées et non vérifiées, les failure exceptions non.

    Tu n'es pas obligé d'utiliser throw par contre, je m'explique:

    Soit tu propages l'exception à une classe d'une couche supérieur (exemple une super-classe) et donc tu lance un throw comme ceci par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void calcul(int a; int b) throws NewCalculException{
         if(a==0) throw new NewCalculException();
    }

    Soit tu la gères et tu l'attrapes au moyen de try..catch:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void calcul(int a; int b) throws NewCalculException{
         try{
     
              int c = a + b;
         }catch(NewCalculException e){
              e.toString();
        }
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut
    merci mais imaginons j' ai 2 méthodes qui peuvent declencher la meme exception.

    Comment se propage l exception ici vu qu ' elle n ' est pas gérée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class Point {
     
        private int x , y ;
        public Point(int x, int y )throws ErrConst {
     
            if (x <0 || y <0) throw new ErrConst();
            this.x= x;
            this.y= y;
        }
     
        public void affiche (){
            System.out.println ("coordonnées : " + x + " " + y );
     
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Except1 {
     
     
        public static void main (String [] args ) throws ErrConst{
            Point a = new Point (1,4);
            a.affiche ();
            a = new Point (-3,5);
            a.affiche();
     
        }
    }

  4. #4
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Si tu utilise le code comme tu l'a mis si tu essaye de faire un new Point avec un x négatif l'exception va être propagée à la méthode main qui va elle même la propager et donc le programme sera arrêté et tu aura la trace de l'exception affichée dans la console.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut
    ok je te remercie ;

    par contre je voulais réaliser un petit programme permettant de controler une saisie clavier , j' utilise la classe Scanner (je ne souhaiterai pas passer par Integer.parseInt )

    Voici le programme , comment retourner au debut du try et ainsi redemander une saisie , en effet la je suis dans une boucle infinie étant donné qu" il ne sort plus du bloc catch.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import java.util.*;
    public class TestSaisieChiffre {
     
    	public static void main (String [] args ){
     
    		Scanner lc = new Scanner (System.in);
    		int nbre;
     
    		do{
    			try{
    				System.out.println (" Saisir un nombre : ");
    				nbre = lc.nextInt();
    				break;
     
    			}catch (Exception e ){
    				System.out.println ("Erreur de saisie");
    				continue;
     
    			}
     
    		}while (true);
     
    	}
     
    }
    Merci

  6. #6
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    IL me semble que ça le fait déjà. Si ta saisie est correcte tu ne passe pas dans le catch donc tu sort de tab boucle si elle ne l'est pas tu passe dans le catch et ensuite tu boucle et donc recommence la saisie.
    Personnellement je n'aime pas trop les while (true). Dans ton cas tu pourrais utiliser un flag boolean.

Discussions similaires

  1. probleme : throw new Exception
    Par anto48_4 dans le forum Langage
    Réponses: 8
    Dernier message: 20/12/2010, 08h24
  2. Réponses: 9
    Dernier message: 25/08/2009, 13h31
  3. [Exception] Validate throws Exception ?
    Par phoebe dans le forum Struts 1
    Réponses: 3
    Dernier message: 06/02/2008, 17h20
  4. Réponses: 6
    Dernier message: 14/02/2006, 14h13
  5. Pb : Exception / déroutements / try, throw, catch
    Par Bapt_from_Reims dans le forum C++
    Réponses: 5
    Dernier message: 18/03/2005, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo