Comment créer un type d’exception personnalisé en Java?

Duplication possible:
Comment puis-je écrire une exception par moi-même?

Je voudrais créer une exception personnalisée en Java, comment puis-je le faire?

... try{ ... Ssortingng word=reader.readLine(); if(word.contains(" ")) /*create custom exception*/ } catch(){ 

Lorsque je crée mon exception personnalisée avec throw new... , 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(Ssortingng message) { super(message); } } 

Usage:

 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 depuis Exception . Ça devrait ressembler à ça:

 public class MyOwnException extends Exception { public MyOwnException () { } public MyOwnException (Ssortingng message) { super (message); } public MyOwnException (Throwable cause) { super (cause); } public MyOwnException (Ssortingng message, Throwable cause) { super (message, cause); } } 

Votre question ne spécifie pas si cette nouvelle exception doit être cochée ou décochée.

Comme vous pouvez le voir ici , les deux types sont différents:

  • Les exceptions vérifiées sont destinées à signaler une situation problématique qui doit être gérée par le développeur qui appelle votre méthode. Il devrait être possible de se remettre d’une telle exception. Un bon exemple de ceci est une exception FileNotFoundException . Ces exceptions sont des sous-classes d’ Exception .

  • Les exceptions non vérifiées sont censées représenter un bogue dans votre code, une situation inattendue que 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 gérée par la méthode d’appel, soit en la capturant et en agissant en conséquence, soit en la lançant à la méthode d’appel. Les exceptions non vérifiées ne sont pas destinées à être capturé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 avez seulement besoin d’une exception rapide lancée avec un message, vous pouvez utiliser la classe d’exception de base sur-le-champ

 Ssortingng 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 peut ê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 { } 

De toute façon, si vous utilisez RuntimeException , votre nouvelle Exception sera décochée.

Comme un programmeur attentif lancera souvent une exception pour une occurrence spéciale, il convient de mentionner quelques exceptions générales, telles que IllegalArgumentException et IllegalArgumentException et IllegalArgumentException . IllegalArgumentException est mon préféré:

 throw new IllegalArgumentException("Word contains blank: " + word); 

Une exception est une classe comme toute autre classe, sauf qu’elle s’étend depuis 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 cela pourrait être une lecture intéressante

Il vous suffit de 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 didacticiel Java. Ce sont des éléments de base que tout développeur Java doit connaître: http://docs.oracle.com/javase/tutorial/essential/exceptions/

Vous devez définir votre exception ailleurs en tant que nouvelle classe

 public class YourCustomException extends Exception{ //Required inherited methods here } 

Ensuite, vous pouvez lancer et intercepter YourCustomException autant que vous le souhaitez.

Vous pouvez créer votre propre exception en héritant de java.lang.Exception Voici un exemple qui peut vous aider à le faire.