6.2.2.3. Créer des exceptions personnalisées


Cette tâche vous montre comment créer des exceptions personnalisées et comment les utiliser. Cette tâche ne couvre pas toutes les fonctionnalités en option ou le processus de localisation de ces exceptions.
Voir le guide de démarrage logging-tools pour trouver un exemple complet.
Pour cette tâche, on assume que vous possédez déjà un projet informatique créé dans le Red Hat JBoss Developer Studio ou Maven, et sur lequel vous souhaitez ajouter des exceptions internationalisées.

Procédure 6.3. Créer et utiliser des exceptions internationalisées

  1. Ajouter une configuration JBoss Logging Tools

    Ajouter la configuration de projet qui convient pour prendre en charge JBoss Logging Tools. Voir Section 6.2.6.1, « Configuration Maven JBoss Logging Tools »
  2. Créer une interface pour les exceptions.

    JBoss Logging Tools définit les exceptions internationalisées dans les interfaces. Nommer chaque interface de façon descriptive pour les exceptions qui seront décrites à l'intérieur.
    L'interface possède les prérequis suivants :
    • Elle doit être déclarée public.
    • Elle doit être annotée par @org.jboss.logging.MessageBundle.
    • L'interface doit définir un champ qui corresponde à un lot de messages du même type que l'interface.
    @MessageBundle(projectCode="")
    public interface ExceptionBundle 
    {
       ExceptionBundle EXCEPTIONS = Messages.getBundle(ExceptionBundle.class);
    }
    
    Copy to Clipboard Toggle word wrap
  3. Ajouter les définitions de méthode

    Ajouter une définition de méthode à l'interface pour chaque exception. Nommez chaque méthode de façon descriptive pour chaque exception qu'elle représente.
    Chaque méthode a les prérequis suivants :
    • Elle doit renvoyer un objet du type Exception ou bien un sous-type d' Exception.
    • La méthode doit être annotée par @org.jboss.logging.Message.
    • L'attribut de @org.jboss.logging.Message doit être défini à la valeur du message d'exception par défaut. Il s'agit du message qui est utilisé s'il n'y a pas de traduction.
    • Si l'exception est retournée à un constructeur qui nécessite des paramètres en plus d'une chaîne de message, alors ces paramètres doivent être fournis dans la définition de méthode à l'aide de l'annotation @param. Les paramètres doivent être du même type et du même ordre que le constructeur.
    @Message(value = "The config file could not be opened.")
    IOException configFileAccessError();
    
    @Message(id = 13230, value = "Date string '%s' was invalid.")
    ParseException dateWasInvalid(String dateString, @Param int errorOffset);
    Copy to Clipboard Toggle word wrap
  4. Méthodes d'invocation

    Invoquer les méthodes d'interface de votre code quand vous devrez obtenir une des exceptions. Les méthodes ne lancent pas d'exceptions, elles envoient l'objet d'exception que vous pourrez alors envoyer vous-même.
    try 
    {
       propsInFile=new File(configname);
       props.load(new FileInputStream(propsInFile));
    }
    catch(IOException ioex) //in case props file does not exist
    {
       throw ExceptionBundle.EXCEPTIONS.configFileAccessError(); 
    }
    Copy to Clipboard Toggle word wrap
RÉSULTAT : le projet prend maintenant en charge les exceptions internationalisées qui peuvent être localisées.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat