Duplicate possible:
Comment puis-je écrire une exception par moi-même?
J'aimerais créer une exception personnalisée en Java, comment puis-je le faire?
...
try{
...
String Word=reader.readLine();
if(Word.contains(" "))
/*create custom exception*/
}
catch(){
Lorsque je crée mon exception personnalisée avec throw new...
, j'obtiens l'erreur unreported exception...must be caught or declared to be thrown
.
Vous devriez pouvoir créer une classe d’exception personnalisée qui étend la classe Exception
, par exemple:
class WordContainsException extends Exception
{
// Parameterless Constructor
public WordContainsException() {}
// Constructor that accepts a message
public WordContainsException(String message)
{
super(message);
}
}
Utilisation:
try
{
if(Word.contains(" "))
{
throw new WordContainsException();
}
}
catch(WordContainsException ex)
{
// Process message however you would like
}
Vous devez créer une classe qui s'étend de Exception
. Ça devrait ressembler à ça:
public class MyOwnException extends Exception {
public MyOwnException () {
}
public MyOwnException (String message) {
super (message);
}
public MyOwnException (Throwable cause) {
super (cause);
}
public MyOwnException (String message, Throwable cause) {
super (message, cause);
}
}
Votre question ne précise pas si cette nouvelle exception doit être cochée ou non.
Comme vous pouvez le voir ici , les deux types sont différents:
Les exceptions cochées sont destinées à signaler une situation problématique que le développeur qui appelle votre méthode devrait gérer. Il devrait être possible de récupérer d'une telle exception. Un bon exemple de ceci est un FileNotFoundException . Ces exceptions sont des sous-classes de Exception .
Les exceptions non contrôlées sont censées représenter un bogue dans votre code, une situation inattendue pour laquelle vous ne pourrez peut-être pas récupérer. Un NullPointerException est un exemple classique. Ces exceptions sont des sous-classes de RuntimeException
L'exception vérifiée doit être traitée par la méthode d'appel, soit en l'attrapant et en agissant en conséquence, soit en la renvoyant à la méthode d'appel. Les exceptions non contrôlées ne doivent pas être interceptées, même s'il est possible de le faire.
Excellentes réponses sur la création de classes d'exception personnalisées. Si vous avez l'intention de réutiliser l'exception en question, je suivrais leurs réponses/conseils. Cependant, si vous n'avez besoin que d'une exception rapide avec un message, vous pouvez utiliser la classe d'exception de base sur-le-champ.
String Word=reader.readLine();
if(Word.contains(" "))
/*create custom exeception*/
throw new Exception("My one time exception with some message!");
}
Comme vous pouvez simplement créer et lancer des exceptions, cela pourrait être aussi simple que
if ( Word.contains(" ") )
{
throw new RuntimeException ( "Word contains one or more spaces" ) ;
}
Si vous souhaitez être plus formel, vous pouvez créer une classe Exception.
class SpaceyWordException extends RuntimeException
{
}
Dans les deux cas, si vous utilisez RuntimeException
, votre nouveau Exception
ne sera pas coché.
Comme un programmeur avisé lève souvent une exception pour une occurrence spéciale, il convient de mentionner certaines exceptions d'usage général telles que IllegalArgumentException
et IllegalStateException
et UnsupportedOperationException
. IllegalArgumentException
est mon préféré:
throw new IllegalArgumentException("Word contains blank: " + Word);
Une exception est une classe comme n'importe quelle autre classe, sauf qu'elle s'étend de Exception
. Donc, si vous créez votre propre classe
public class MyCustomException extends Exception
vous pouvez lancer un tel exemple avec
throw new MyCustomException( ... );
//using whatever constructor params you decide to use
Et this pourrait être une lecture intéressante
Vous devez simplement créer une classe qui étend Exception (pour une exception vérifiée) ou toute sous-classe d'Exception, ou RuntimeException (pour une exception d'exécution) ou toute sous-classe de RuntimeException.
Ensuite, dans votre code, utilisez simplement
if (Word.contains(" "))
throw new MyException("some message");
}
Lisez le tutoriel Java. Tous les développeurs Java devraient connaître les éléments de base suivants: http://docs.Oracle.com/javase/tutorial/essential/exceptions/
Vous devez définir votre exception ailleurs comme une nouvelle classe
public class YourCustomException extends Exception{
//Required inherited methods here
}
Ensuite, vous pouvez lancer et attraper YourCustomException autant que vous le souhaitez.
Vous pouvez créer votre propre exception en héritant de Java.lang.Exception
Here est un exemple qui peut vous aider à le faire.