Rumah >Java >javaTutorial >Bagaimana Mengendalikan Pengecualian dalam Kaedah Penyulitan AES Java?
Pengendalian Pengecualian dalam Kod Java
Pertimbangkan coretan kod Java berikut:
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 } } } // ... }
Soalan dan jawapan berikut menangani masalah yang dihadapi semasa menyusun kod ini coretan.
Soalan 1: Mengapa coretan kod membuang pengecualian "Pengecualian; mesti ditangkap atau diisytiharkan dibuang" semasa cuba menyusunnya?
Jawapan:
Pengecualian ini berlaku kerana kaedah penyulitan diisytiharkan untuk membuang Pengecualian tetapi tidak mengendalikannya dalam blok cuba-tangkapnya. Untuk menyelesaikan masalah ini, blok tangkapan telah ditambahkan pada kaedah penyulitan untuk mengendalikan Pengecualian.
Soalan 2: Mengapa coretan kod membuang pengecualian "penyata pemulangan hilang" untuk baris 109?
Jawapan:
Kaedah penyulitan telah diisytiharkan kembalikan jenis bait[], yang bermaksud ia mesti mengembalikan nilai jenis itu dalam semua kes. Kod asal tidak mempunyai pernyataan pulangan dalam blok tangkapan, mengakibatkan pengecualian. Kenyataan pemulangan telah ditambahkan pada blok tangkapan untuk mengembalikan null sekiranya berlaku pengecualian.
Pelajaran yang Diperoleh:
Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengecualian dalam Kaedah Penyulitan AES Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!