Comment puis-je écrire des exceptions personnalisées?

Comment puis-je créer une nouvelle Exception différente des types pré-créés?

 public class InvalidBankFeeAmountException extends Exception{ public InvalidBankFeeAmountException(Ssortingng message){ super(message); } } 

Il affichera l’avertissement pour l’ exception InvalidBankFeeAmountException écrite dans la première ligne.

Tout ce que vous avez à faire est de créer une nouvelle class et de l’ extend Exception .

Si vous souhaitez qu’une Exception soit décochée, vous devez extend RuntimeException .

Remarque : Une Exception vérifiée est une Exception qui vous oblige à entourer Exception dans un bloc try / catch ou à avoir une clause ‘ throws ‘ dans la déclaration de méthode. (comme IOException ) Les Exceptions non vérifiées peuvent être renvoyées comme les Exceptions vérifiées, mais vous n’êtes pas obligé de les gérer explicitement ( IndexOutOfBoundsException ).

Par exemple:

 public class MyNewException extends RuntimeException { public MyNewException(){ super(); } public MyNewException(Ssortingng message){ super(message); } } 

juste prolonger soit

  • Exception , si vous souhaitez que votre exception soit vérifiée (c.-à-d. Requise dans une clause throws)
  • RuntimeException , si vous souhaitez que votre exception soit décochée.

Veillez à ne pas aller trop loin avec les exceptions, en particulier les exceptions vérifiées. Je vous recommande de lire le chapitre 9 de Effective Java de Joshua Bloch, et en particulier son article 60 (Favoriser l’utilisation des exceptions standard). Ses recommandations incluent également l’utilisation des exceptions vérifiées pour les exceptions pouvant être récupérées, en utilisant des exceptions non vérifiées (RuntimeExceptions) pour les erreurs de programmation et en évitant l’utilisation inutile d’exceptions vérifiées.

Si une exception InvalidBankAccount est générée à chaque fois qu’une erreur de programmation est détectée, vous souhaitez probablement simplement lancer une exception Java IllegalStateException non contrôlée standard. (Cela évite soigneusement la nécessité de déclarer serialVersionUID.)

Jeter un coup d’œil à:

http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1

Un exemple est donné à la page 2:

 public class DuplicateUsernameException extends Exception { public DuplicateUsernameException (Ssortingng username){....} public Ssortingng requestedUsername(){...} public Ssortingng[] availableNames(){...} } 

avec un ensemble de lignes direcsortingces pour quand et pourquoi vous créer vos propres exceptions.