Maison > Java > javaDidacticiel > Pourquoi les exceptions Java doivent-elles être détectées ou déclarées ?

Pourquoi les exceptions Java doivent-elles être détectées ou déclarées ?

Patricia Arquette
Libérer: 2024-12-24 19:35:15
original
506 Les gens l'ont consulté

Why Must Java Exceptions Be Caught or Declared?

Pourquoi Java exige-t-il que les exceptions soient interceptées ou déclarées pour être levées ?

En Java, une méthode peut lever une exception si une erreur se produit lors de son exécution. Si la méthode ne gère pas explicitement l’exception, elle doit déclarer l’exception dans sa signature de méthode. Cela oblige l'appelant de la méthode à gérer l'exception ou à déclarer l'exception dans sa propre signature de méthode.

Pourquoi obtenez-vous l'exception "java.lang.Exception; doit être interceptée ou déclarée à être lancé" ?

Cette exception se produit lorsqu'une méthode appelle une autre méthode qui lève une exception vérifiée, mais que la méthode appelante ne gère pas l'exception ou ne la déclare pas dans sa méthode signature.

Dans votre code, la méthode encrypt lève une exception vérifiée javax.crypto.IllegalBlockSizeException, mais la méthode actionPerformed ne gère ni ne déclare cette exception.

Comment résoudre le problème problème

Pour résoudre ce problème, vous pouvez soit gérer l'exception dans la méthode actionPerformed, soit déclarer l'exception dans la méthode signature.

Gestion de l'exception:

public void actionPerformed(ActionEvent e) {
    try {
        byte[] encrypted = encrypt(concatURL);
        String encryptedString = bytesToHex(encrypted);
        content.removeAll();
        content.add(new JLabel("Concatenated User Input -->" + concatURL));

        content.add(encryptedTextField);
    setContentPane(content);
    } catch (Exception exc) {
        // TODO: handle the exception
    }
}
Copier après la connexion

Déclaration de l'exception:

public void actionPerformed(ActionEvent e) throws Exception {
    
        byte[] encrypted = encrypt(concatURL);
        String encryptedString = bytesToHex(encrypted);
        content.removeAll();
        content.add(new JLabel("Concatenated User Input -->" + concatURL));

        content.add(encryptedTextField);
    setContentPane(content);

}
Copier après la connexion

Manquant erreur d'instruction return :

Cette erreur se produit car la méthode de cryptage ne avoir une instruction return dans le bloc catch. Cela signifie que la méthode ne renvoie rien en cas d'exception, ce qui n'est pas autorisé.

Pour résoudre ce problème, vous pouvez ajouter une instruction return au bloc catch, comme indiqué ci-dessous :

public static byte[] encrypt(String toEncrypt) throws Exception{
    try{
        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;
    } catch(Exception e){
        return null;            // Always must return something
    }
}
Copier après la connexion

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