53 votes

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

Comment créer un nouveau Exception différent des types prédéfinis?

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

Il montrera l'avertissement pour l' exception InvalidBankFeeAmountException qui est écrit dans la première ligne.

117voto

jjnguy Points 62123

Tout ce que vous devez faire est de créer un nouveau class et l'ont extend Exception.

Si vous souhaitez un Exception qui n'est pas cochée, vous devez extend RuntimeException.

Remarque: Un contrôle Exception est celle qui exige de vous entourer l' Exception en try/catch bloquer ou une 'throws"clause sur la déclaration de la méthode. (comme IOException) Décochée Exceptions peuvent être jetés comme vérifié Exceptions, mais vous n'êtes pas obligé de traiter explicitement de toute façon (IndexOutOfBoundsException).

Par exemple:

public class MyNewException extends RuntimeException {

    public MyNewException(){
        super();
    }

    public MyNewException(String message){
        super(message);
    }
}

33voto

toolkit Points 27248

juste étendre soit

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

6voto

Jim Ferrans Points 13673

Assurez-vous de ne pas aller dessus avec des exceptions, en particulier vérifié exceptions. Je vous recommande la lecture du Chapitre 9 de Joshua Bloch est Efficace Java, et en particulier son Article 60 (Favoriser l'utilisation de la norme des exceptions). Ses recommandations sont également nclude à l'aide checked exceptions pour les exceptions qui peuvent être récupérés à partir, l'utilisation incontrôlée des exceptions (RuntimeExceptions) pour les erreurs de programmation, et d'éviter l'utilisation inutile de l'checked exceptions.

Si un InvalidBankAccount exception est levée lorsqu'une erreur de programmation est trouvé, vous avez probablement juste de vouloir jeter un standard décoché Java IllegalStateException à la place. (Cette élude soigneusement la nécessité de déclarer serialVersionUID.)

3voto

Jon Points 23749

Jeter un coup d'œil à:

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

Un exemple y est donné à la page 2:

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

avec un ensemble de directives pour quand et pourquoi créer vos propres exceptions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X