Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exceptions personnalisées

Petit soucis

Sujet résolu
21 juillet 2010 à 15:05:30

Bonjour à tous.
Je suis actuellement le tuto de cysboy sur le java.

J'en suis au chapitre sur les exceptions personnalisées.

J'ai donc créé une classe NombreHabitantException comme indiqué dans son tuto :
public class NombreHabitantException extends Exception{
	   public NombreHabitantException(){
           System.out.println("Vous essayez d'instancier une classe Ville avec un nombre d'habitants négatif !");
           }
}


Voici ensuite mon constructeur de classe Ville :
public Ville(String pNom, int pNbre, String pPays) throws NombreHabitantException
  {  
	  if(pNbre < 0)
	  {    
		  throw new NombreHabitantException();
	  }
	  else
	  {

        //On incrémente nos variables à chaque appel aux constructeurs
          nbreInstance++;
          nbreInstanceBis++;
          
          nomVille = pNom;
          nomPays = pPays;
          nbreHabitant = pNbre;
          this.setCategorie();
	  }
  }


Mais dans ce constructeur, les mots NombreHabitantException sont soulignés en rouge (dans eclipse) et cela m'affiche :

No exception of type NombreHabitantException can be thrown; an exception type must be a subclass of Throwable

J'ai eu beau cherché, je ne trouve pas la raison de cette erreur. Je pense avoir bien suivi le tuto pourtant.
Avez-vous une idée ?

Merci par avance
Cordialement
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:18:24

Salut,

est-ce que ta classe NombreHabitantsException se trouve dans le même package que Ville ? Sinon, est-ce que l'import est bien fait ? Et sinon, est-ce que tu as bien importé Exception dans ta classe NombreHabitantException ?

Si le problème ne vient pas de là je ne vois pas, parce que ce que veut Eclipse c'est un héritier de Throwable, et comme c'est le cas de Exception, ça marche aussi pour ton exception personnalisée...
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:23:36

Je crois aussi que c'est quelque chose dans ce goût là. Ta seule erreur signalée se trouve là où tu l'as dites?
Je ne m'occupe pas souvent de faire des exceptions perso, mais mis à part un problème d'import, je ne vois pas pourquoi eclipse te balancerais ça...
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:26:22

Oui, les deux classes se trouvent dans le même package.
Quand tu demande si j'ai importé Exception dans ma classe NombreHabitantException, c'est bien la ligne suivante non ?
public class NombreHabitantException extends Exception{


Le extends ne suffit pas ?
Il faut faire un import explicite ? Je pensais que la classe Exception ne nécessitait pas d'import particulier.
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:31:57

C'est pour ça que je préfère NetBeans : il te dit tout de suite quels imports il faut faire :)

Avec eclipse, je crois qu'il faut faire CTRL + SHIFT + 0 pour que tes imports se fassent comme il faut ;)
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:33:17

J'ai bien fait cela, mais Eclipse me dit qu'il n'y a pas d'import à faire...
Je ne comprends pas trop o_O

PS :
Dois-je ajouter quelque chose lors de la déclaration de ma classe Ville ?
public class Ville {

  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:37:51

Et si tu enregistrais tout bien ton projet ? En rafraîchissant tout bien aussi ?

P.S. Avec Eclipse, si une classe n'est pas reconnue, t'as une pitite croix rouge, tu cliques dessus, et très souvent le premier import est le bon. Ca peut même être fait automatiquement si tu n'es pas satisfait...
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:38:25

Effectivement, je viens de vérifier et Exception n'a pas besoin d'imports, au temps pour moi...

J'ai jamais fait d'exceptions personnalisées alors je découvre un peu là, je continue de regarder :euh:
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 15:43:33

Oui tout est bien enregistré, une classe NombreHabitantException qui contient
public class NombreHabitantException extends Exception{
	
	   public NombreHabitantException(){
           System.out.println("Vous essayez d'instancier une classe Ville avec un nombre d'habitants négatif !");
   }

}

Et voici un screenshot de ma classe Ville (où vous pouvez voir que tout est dans le même package) :

Image utilisateur



Merci à vous en tout cas :)
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 16:19:03

Salut.
Dans le constructeur de ta NombreHabitantException, essaye de remplacer ton System.out.println(tonTexte) par super(tonTexte).
Perso c'est comme ça que je fais mes Exception...
  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2010 à 18:02:00

J'ai trouvé !!

Il faut dire que c'était tordu comme situation ^^

En fait, comme je suis un gros ZérO, j'ai créé une classe perso que j'ai nommé Exception.java :euh:
Donc Dans ma classe, quand je faisait un extends Exception, c'est ma petite classe qui était chargée, et donc ça ne marchait forcément pas...

Bref, merci iM@x pour ton conseil et merci à vous tous pour vos réponses :)

See Ya !
  • Partager sur Facebook
  • Partager sur Twitter
7 mars 2018 à 9:40:03

Moukett a écrit:

Salut.
Dans le constructeur de ta NombreHabitantException, essaye de remplacer ton System.out.println(tonTexte) par super(tonTexte).
Perso c'est comme ça que je fais mes Exception...


Bonjour,

J'ai le même problème. Quand je fais comme ce que tu dis, il s'affiche "The constructor Exception(String) is undefined". Merci par avance de votre réponse.

  • Partager sur Facebook
  • Partager sur Twitter
2 mai 2021 à 10:52:54

Et bien Merci bseclier j'ai fait pile poil la même chose que toi et je viens de résoudre grâce à ton post
  • Partager sur Facebook
  • Partager sur Twitter
2 mai 2021 à 12:23:23

@ContardoLorenzo Bonjour, merci de ne pas déterrer d'ancien sujet résolu, pour dire merci pas la peine de déterrer un sujet vous avez la possibilité de cliquer sur les pouces levés des messages qui vous ont aidés.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter