Java에서 예외를 포착하거나 throw하도록 선언해야 하는 이유는 무엇입니까?
Java에서는 오류가 발생하는 경우 메소드에서 예외를 발생시킬 수 있습니다. 실행 중에 발생합니다. 메서드가 예외를 명시적으로 처리하지 않는 경우 해당 메서드 시그니처에서 예외를 선언해야 합니다. 이렇게 하면 메소드 호출자가 예외를 처리하거나 자체 메소드 시그니처에서 예외를 선언하게 됩니다.
예외 "java.lang.Exception이 발생하는 이유는 무엇입니까? "?
이 예외는 메서드가 확인된 예외를 발생시키는 다른 메서드를 호출하지만 호출하는 메서드가 예외를 처리하지 않거나 해당 메서드에서 선언하지 않을 때 발생합니다. 서명.
코드에서 encrypt 메소드는 javax.crypto.IllegalBlockSizeException 확인 예외를 발생시키지만 actionPerformed 메소드는 이 예외를 처리하거나 선언하지 않습니다.
해결 방법 문제
이 문제를 해결하려면 actionPerformed 메서드에서 예외를 처리하거나 선언하면 됩니다. 메소드 시그니처의 예외.
예외 처리:
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 } }
예외 선언:
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); }
반품문이 누락되었습니다. error:
이 오류는 암호화 메서드의 catch 블록에 return 문이 없기 때문에 발생합니다. 이는 허용되지 않는 예외가 발생한 경우 메소드가 아무것도 반환하지 않는다는 것을 의미합니다.
이 문제를 해결하려면 아래와 같이 return 문을 catch 블록에 추가할 수 있습니다.
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 } }
위 내용은 Java 예외를 포착하거나 선언해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!