Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Débutant] Lever une exception

6 réponses
Avatar
noone
Bonsoir,

j'ai un petit problème.

Je veux lever une exception dans une méthode.
je fais donc

throw new Exception("le message que je veux faire passer")

Je rajoute sur ma méthode throws Exception
puisque cette méthode peut lever une exception


Le problème c'est que cette même méthode retourne (lorsqu'il n'y a pas
d'exception levée) un double...

et ce double est utilisé dans une autre méthode.

Dois-je mettre throws Exception sur la deuxième ?

Moi je veux simplement que lorsque je lève une exception un message
s'affiche et que le programme s'arrête... (je ne veux même pas la récupérer)


Merci de m'aider un peu


PS : les exceptions en ADA... c'est vachement plus facile ;-)

6 réponses

Avatar
David
Le Tue, 01 Nov 2005 19:08:20 +0100, a écrit :
Moi je veux simplement que lorsque je lève une exception un message
s'affiche et que le programme s'arrête... (je ne veux même pas la
récupérer)


tu fais throw new RuntimeException(...);

Avatar
noone

Moi je veux simplement que lorsque je lève une exception un message
s'affiche et que le programme s'arrête... (je ne veux même pas la
récupérer)



tu fais throw new RuntimeException(...);



et je n'ai pas besoin de mettre throws Exception sur ma méthode ?


Où puis-je trouver plus d'info sur la différence entre RuntimeException
et Exception.


Est-ce que je peux quand même traiter une exception levée par
RuntimeException ?

Je n'ai pas l'impression que le message passé en paramètre s'affiche sur
la console.

voilà ce que ça me dit

/usr/lib/sun-j2se5.0-jdk/bin/java CMain
Exception in thread "main" java.lang.NoClassDefFoundError: CMain


moi je voudrais justement utiliser ce mécanisme pour retrouver
facilement des éventuelles erreurs... donc j'ai besoin de connaitre le
message...


Avatar
noone
Pardon le message c'est ça

Exception in thread "main" java.lang.NullPointerException
at CSignal.<init>(CSignal.java:46)
at CMain_console.main(CMain_console.java:35)


(je n'avais pas lancé le bon .class)
Avatar
noone
Pardon le message c'est ça

Exception in thread "main" java.lang.NullPointerException
at CSignal.<init>(CSignal.java:46)
at CMain_console.main(CMain_console.java:35)


(je n'avais pas lancé le bon .class)


Non en fait c'était un autre problème

C'est un programme que j'avais écrit en C++ et que je passe en Java...

Alors il y a quelques subtilités...

C'était un problème avec des tableaux

Avatar
David
Le Tue, 01 Nov 2005 21:14:50 +0100, a écrit :

Pardon le message c'est ça

Exception in thread "main" java.lang.NullPointerException
at CSignal.<init>(CSignal.java:46)
at CMain_console.main(CMain_console.java:35)




Dans ton main tu fait :

... main ... {

try {
... TON CODE ..
} catch (Throwable t) {
t.printStackTrace();
}
}

Tu auras ton exception. Et non les RuntimeExceptions n'ont pas besoin
d'être précisé dans la signature quand elles sont levées.
Donc dans ton code quand Java t'oblige à mettre un try & catch (par
exemple pour un ClassCastException, tu fais :
try {
...
} catch (ClassCastException cce) {
throw new RuntimeException(cce);
}

Evidemment cela ne te dispense pas de lire la javadoc pour comprendre ce
que tu fais.


Avatar
noone