なぜ Java では例外をキャッチするか、スローするように宣言する必要があるのですか?
Java では、エラーが発生した場合にメソッドが例外をスローできます。実行中に発生します。メソッドが例外を明示的に処理しない場合は、メソッド シグネチャで例外を宣言する必要があります。これにより、メソッドの呼び出し元は、例外を処理するか、独自のメソッド シグネチャで例外を宣言する必要があります。
例外「java.lang.Exception が発生するのはなぜですか。キャッチするか、宣言する必要があります。」 be throw"?
この例外は、メソッドがチェック例外をスローする別のメソッドを呼び出したが、呼び出し元のメソッドが例外を処理しないか、メソッド内で例外を宣言しなかった場合に発生します。署名.
コードでは、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); }
return ステートメントがありませんerror:
このエラーは、encrypt メソッドの catch ブロックに return ステートメントがないために発生します。これは、例外が発生した場合にメソッドが何も返さないことを意味しますが、これは許可されていません。
この問題を解決するには、以下に示すように、catch ブロックに return ステートメントを追加できます。
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 中国語 Web サイトの他の関連記事を参照してください。