Ausnahmebehandlung im Java-Code
Bedenken Sie den folgenden Java-Codeausschnitt:
import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.crypto.*; import javax.crypto.spec.*; import java.security.*; import java.io.*; public class EncryptURL extends JApplet implements ActionListener { // ... public void 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 } } public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == "Submit") { // ... String concatURL = "user=" + subUserName + "&f=" + subFName + "&l=" + subLName + "&em=" + subEmail + "&p=" + subPhone + "&h=" + subHeartbeatID + "&re=" + subRegionCode + "&ret=" + subRetRegionCode; // ... try { byte[] encrypted = encrypt(concatURL); String encryptedString = bytesToHex(encrypted); // ... } catch (Exception exc) { // TODO: handle exception } } } // ... }
Die folgenden Fragen und Antworten Beheben Sie die Probleme, die beim Kompilieren dieses Code-Snippets aufgetreten sind.
Frage 1: Warum löst das Code-Snippet beim Versuch, es zu kompilieren, die Ausnahme „Ausnahme; muss abgefangen oder deklariert werden“ aus?
Antwort:
Dies Eine Ausnahme tritt auf, weil die Verschlüsselungsmethode so deklariert ist, dass sie eine Ausnahme auslöst, diese jedoch nicht in ihrem Try-Catch-Block behandelt. Um dieses Problem zu beheben, wurde der Verschlüsselungsmethode ein Catch-Block hinzugefügt, um die Ausnahme zu behandeln.
Frage 2: Warum löst das Code-Snippet eine Ausnahme „Fehlende Rückgabeanweisung“ für Zeile 109 aus?
Antwort:
Die Verschlüsselungsmethode ist deklariert Der Rückgabetyp ist byte[], was bedeutet, dass in allen Fällen ein Wert dieses Typs zurückgegeben werden muss. Der ursprüngliche Code enthielt keine Return-Anweisung im Catch-Block, was zu einer Ausnahme führte. Dem Catch-Block wurde eine Return-Anweisung hinzugefügt, um im Ausnahmefall null zurückzugeben.
Erkenntnisse:
Das obige ist der detaillierte Inhalt vonWie behandelt man Ausnahmen in der AES-Verschlüsselungsmethode von Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!