Maison > Java > javaDidacticiel > Comment gérer les erreurs « Exception ; doit être interceptée ou déclarée pour être lancée » dans le cryptage Java ?

Comment gérer les erreurs « Exception ; doit être interceptée ou déclarée pour être lancée » dans le cryptage Java ?

Barbara Streisand
Libérer: 2024-12-12 12:09:11
original
302 Les gens l'ont consulté

How to Handle

Exceptions non gérées en Java : "Exception ; doit être interceptée ou déclarée pour être levée"

En Java, toutes les exceptions vérifiées, telles que IOException ou EncryptionException doit être interceptée ou déclarée dans la signature de la méthode à l'aide de la clause throws. Ne pas gérer correctement ces exceptions peut entraîner des erreurs de compilation.

Considérez l'extrait de code suivant :

public static byte[] encrypt(String toEncrypt) {
    String plaintext = toEncrypt;
    String key = "01234567890abcde";
    String iv = "fedcba9876543210";

    SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
    IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());

    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
    byte[] encrypted = cipher.doFinal(toEncrypt.getBytes());

    return encrypted;
}
Copier après la connexion

Lorsque vous essayez de compiler ce code, vous pouvez rencontrer l'erreur suivante :

Exception; must be caught or declared to be thrown
byte[] encrypted = cipher.doFinal(toEncrypt.getBytes());
Copier après la connexion

Cette erreur se produit car la méthode encrypt ne gère pas l'exception qui peut être levée par cipher.doFinal. Pour résoudre ce problème, vous devez soit gérer l'exception dans la méthode, soit la déclarer dans la signature de la méthode à l'aide de throws Exception.

Exemple de gestion des exceptions :

public static byte[] encrypt(String toEncrypt) throws Exception {
    String plaintext = toEncrypt;
    String key = "01234567890abcde";
    String iv = "fedcba9876543210";

    SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
    IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());

    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
    byte[] encrypted = cipher.doFinal(toEncrypt.getBytes());

    return encrypted;
}
Copier après la connexion

Dans cette version modifiée, la méthode encrypt déclare désormais qu'elle lève une exception. Cela permet au code appelant de gérer l'exception de manière appropriée.

Déclaration de retour manquante :

Une autre erreur mentionnée est « déclaration de retour manquante ». Cela indique qu'une méthode avec un type de retour ne fournit pas d'instruction return dans tous les chemins d'exécution possibles. Par exemple, dans le code suivant :

public static byte[] encrypt(String toEncrypt) throws Exception {
    // ... code omitted

    if (condition) {
        return encrypted;
    }

    // Missing return statement for the else case
}
Copier après la connexion

Dans cet exemple, la méthode encrypt ne renvoie rien dans le cas contraire. Cela entraînera une erreur de compilation. Pour résoudre ce problème, assurez-vous que tous les chemins d'exécution possibles renvoient une valeur appropriée.

Bonnes pratiques :

Pour éviter ces types d'erreurs, gérez toujours les exceptions vérifiées de manière appropriée et fournissez instructions return pour toutes les méthodes avec des types de retour. De plus, envisagez d'utiliser des blocs try-with-resources lorsque cela est logique, car ils ferment automatiquement les ressources et peuvent simplifier la gestion des exceptions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal