Java 코드의 예외 처리
다음 Java 코드 조각을 고려하세요.
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 } } } // ... }
다음 질문과 답변 이 코드를 컴파일하는 동안 직면한 문제를 해결하세요. snippet.
질문 1: 코드 조각을 컴파일하려고 할 때 "예외; 포착되거나 선언되어야 함" 예외가 발생하는 이유는 무엇입니까?
답변:
이 예외는 암호화 메소드가 예외이지만 try-catch 블록에서는 처리하지 않습니다. 이 문제를 해결하기 위해 예외를 처리하기 위한 catch 블록이 encrypt 메서드에 추가되었습니다.
질문 2: 코드 조각에서 109행에 대해 "반환 문 누락" 예외가 발생하는 이유는 무엇입니까?
정답:
encrypt 메소드에는 선언된 반환 유형 byte[]가 있습니다. 이는 모든 경우에 해당 유형의 값을 반환해야 함을 의미합니다. 원래 코드에는 catch 블록에 return 문이 없어 예외가 발생했습니다. 예외 발생 시 null을 반환하는 return 문이 catch 블록에 추가되었습니다.
배운 교훈:
위 내용은 Java의 AES 암호화 방법에서 예외를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!