Créer sa classe exception
Fermé
aya
-
18 nov. 2012 à 05:35
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 21 nov. 2012 à 14:39
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 21 nov. 2012 à 14:39
A voir également:
- Créer sa classe exception
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram - Guide
- Créer liste déroulante excel - Guide
2 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
18 nov. 2012 à 13:38
18 nov. 2012 à 13:38
C'est assez simple, tu as juste à hériter d'une classe Exception :
Au niveau de l'utilisation, cela se fait comme avec n'importe quelle autre exception, throws, throw, try/catch.
Remarque : avec ArithmeticException et toutes les RuntimeException en général, il n'est pas nécessaire de traiter systématiquement les exceptions, il est donc possible de les laisser se propager jusqu'au main (comme les NullPointerException par exemple)
public MyException extends ExceptionCependant, Exception c'est très général, si tu considère que ton exception est plutôt du genre ArithmeticException alors tu devrais faire une déclaration dans ce sens :
public MyException extends ArithmeticExceptionAprès tu as aussi la possibilité de redéfinir les méthodes de la classe héritée pour les adapter à tes besoins (rajouter des informations par exemple)
public MyException extends ArithmeticException { public MyException(MyObject object) { super("MyObject "+object+" not valid"); } }
Au niveau de l'utilisation, cela se fait comme avec n'importe quelle autre exception, throws, throw, try/catch.
public void myMethod(MyObject object) throws MyException { if (invalid(object)) throw new MyException(object); } public void action(MyObject object) { try { myMethod(object); } catch (MyException e) { System.err.println(e); // "MyObject "+object+" not valid" } }
Remarque : avec ArithmeticException et toutes les RuntimeException en général, il n'est pas nécessaire de traiter systématiquement les exceptions, il est donc possible de les laisser se propager jusqu'au main (comme les NullPointerException par exemple)
d'accord, j'ai bien compris comment utiliser la classe MyException (catch/try) mais ce que je ne comprends pas du tout c'est qu'est-ce que je dois écrire dans ma classe MyException (mis à part le constructeur..) : j'ai fait un tour sur la doc et je n'ai pas compris qu'elle méthode je devais modifier pour faire ce que je veux faire.
En fait je dois créer une classe pour une exception spécifique :
-si j'ai une variable de type int et que j'essaie de lui attribuer une valeur de type String
-si j'ai une variable de type String et que j'essaie de lui attribuer une valeur de type int
Pouvez-vous m'aider ?
merci d'avance
En fait je dois créer une classe pour une exception spécifique :
-si j'ai une variable de type int et que j'essaie de lui attribuer une valeur de type String
-si j'ai une variable de type String et que j'essaie de lui attribuer une valeur de type int
Pouvez-vous m'aider ?
merci d'avance
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
21 nov. 2012 à 14:39
21 nov. 2012 à 14:39
En général il n'y a que le constructeur à modifier, mais tu ne peux utiliser l'exception que sur des méthodes que tu contrôles à l'exécution. Dans le cas qui t'intéresse, attribuer une valeur de type String à un int, ou l'inverse, c'est une erreur de compilation, donc les exceptions ne servent à rien...
Éventuellement tu peux avoir ça :
Mais tu pourrais directement faire comme ça et laisser les exceptions qui existent déjà faire leur travail, ton exception personnelle ne sert à rien.
Éventuellement tu peux avoir ça :
private int n; public void setN(Object o) throws MyException { if (o instanceof Integer) n = (int) o; else throw new MyException(); } try { Object o = "toto"; setN(o); } catch (MyException e) { System.err.println(e); }
Mais tu pourrais directement faire comme ça et laisser les exceptions qui existent déjà faire leur travail, ton exception personnelle ne sert à rien.
try { Object o = "toto"; n = (int) o; } catch (ClassCastException e) { System.err.println(e); }