> Java > java지도 시간 > Java 암호화에서 '예외가 발생하거나 발생하도록 선언해야 합니다' 오류를 처리하는 방법은 무엇입니까?

Java 암호화에서 '예외가 발생하거나 발생하도록 선언해야 합니다' 오류를 처리하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-12 12:09:11
원래의
251명이 탐색했습니다.

How to Handle

Java에서 처리되지 않은 예외: "예외: catch되거나 throw되도록 선언해야 합니다."

Java에서는 다음과 같은 모든 확인된 예외가 있습니다. IOException 또는 EncryptionException은 throws 절을 사용하여 메서드 시그니처에서 포착되거나 선언되어야 합니다. 이러한 예외를 올바르게 처리하지 못하면 컴파일 오류가 발생할 수 있습니다.

다음 코드 조각을 고려하세요.

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;
}
로그인 후 복사

이 코드를 컴파일하려고 하면 다음 오류가 발생할 수 있습니다.

Exception; must be caught or declared to be thrown
byte[] encrypted = cipher.doFinal(toEncrypt.getBytes());
로그인 후 복사

이 오류는 cipher.doFinal에서 발생할 수 있는 Exception을 암호화 메소드가 처리하지 못하기 때문에 발생합니다. 이 문제를 해결하려면 메서드 내에서 예외를 처리하거나 throws Exception을 사용하여 메서드 시그니처에서 예외를 선언해야 합니다.

예외 처리의 예:

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;
}
로그인 후 복사

이 수정된 버전에서는 이제 암호화 메소드가 예외를 발생시킨다고 선언합니다. 이렇게 하면 호출 코드가 예외를 적절하게 처리할 수 있습니다.

반환 문 누락:

언급된 또 다른 오류는 "반환 문 누락"입니다. 이는 반환 유형이 있는 메서드가 가능한 모든 실행 경로에서 반환 문을 제공하지 않음을 나타냅니다. 예를 들어 다음 코드에서는

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

    if (condition) {
        return encrypted;
    }

    // Missing return statement for the else case
}
로그인 후 복사

이 예에서 encrypt 메서드는 else의 경우 아무것도 반환하지 않습니다. 이로 인해 컴파일 오류가 발생합니다. 이 문제를 해결하려면 가능한 모든 실행 경로가 적절한 값을 반환하는지 확인하세요.

모범 사례:

이러한 유형의 오류를 방지하려면 항상 확인된 예외를 적절하게 처리하고 다음을 제공하세요. 반환 유형이 있는 모든 메서드에 대한 반환 문입니다. 또한 리소스를 자동으로 닫고 예외 처리를 단순화할 수 있으므로 적절한 경우 try-with-resources 블록을 사용하는 것이 좋습니다.

위 내용은 Java 암호화에서 '예외가 발생하거나 발생하도록 선언해야 합니다' 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿