Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I get "Exception; must be caught or declared to be thrown" when I try to compile my Java code?

Tags:

java

exception

Consider:

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 {      Container content;     JTextField userName = new JTextField();     JTextField firstName = new JTextField();     JTextField lastName = new JTextField();     JTextField email = new JTextField();     JTextField phone = new JTextField();     JTextField heartbeatID = new JTextField();     JTextField regionCode = new JTextField();     JTextField retRegionCode = new JTextField();     JTextField encryptedTextField = new JTextField();      JPanel finishPanel = new JPanel();       public void init() {          //setTitle("Book - E Project");         setSize(800, 600);         content = getContentPane();         content.setBackground(Color.yellow);         content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));          JButton submit = new JButton("Submit");          content.add(new JLabel("User Name"));         content.add(userName);          content.add(new JLabel("First Name"));         content.add(firstName);          content.add(new JLabel("Last Name"));         content.add(lastName);          content.add(new JLabel("Email"));         content.add(email);          content.add(new JLabel("Phone"));         content.add(phone);          content.add(new JLabel("HeartBeatID"));         content.add(heartbeatID);          content.add(new JLabel("Region Code"));         content.add(regionCode);          content.add(new JLabel("RetRegionCode"));         content.add(retRegionCode);          content.add(submit);          submit.addActionListener(this);     }       public void actionPerformed(ActionEvent e) {          if (e.getActionCommand() == "Submit"){              String subUserName = userName.getText();             String subFName = firstName.getText();             String subLName = lastName.getText();             String subEmail = email.getText();             String subPhone = phone.getText();             String subHeartbeatID = heartbeatID.getText();             String subRegionCode = regionCode.getText();             String subRetRegionCode = retRegionCode.getText();              String concatURL =                 "user=" + subUserName + "&f=" + subFName +                 "&l=" + subLName + "&em=" + subEmail +                 "&p=" + subPhone + "&h=" + subHeartbeatID +                 "&re=" + subRegionCode + "&ret=" + subRetRegionCode;              concatURL = padString(concatURL, ' ', 16);             byte[] encrypted = encrypt(concatURL);             String encryptedString = bytesToHex(encrypted);             content.removeAll();             content.add(new JLabel("Concatenated User Input -->" + concatURL));              content.add(encryptedTextField);             setContentPane(content);         }     }      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){         }     }       public static byte[] decrypt(byte[] toDecrypt) throws Exception{         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.DECRYPT_MODE, keyspec, ivspec);         byte[] decrypted = cipher.doFinal(toDecrypt);          return decrypted;     }       public static String bytesToHex(byte[] data) {         if (data == null)         {             return null;         }         else         {             int len = data.length;             String str = "";             for (int i=0; i<len; i++)             {                 if ((data[i]&0xFF) < 16)                     str = str + "0" + java.lang.Integer.toHexString(data[i]&0xFF);                 else                     str = str + java.lang.Integer.toHexString(data[i]&0xFF);             }             return str;         }     }       public static String padString(String source, char paddingChar, int size)     {         int padLength = size-source.length() % size;         for (int i = 0; i < padLength; i++) {             source += paddingChar;         }         return source;     } } 

I'm getting an unreported exception:

java.lang.Exception; must be caught or declared to be thrown byte[] encrypted = encrypt(concatURL); 

As well as:

.java:109: missing return statement 

How do I solve these problems?

like image 904
mmundiff Avatar asked May 26 '09 02:05

mmundiff


People also ask

How do I fix exception error in Java?

The try-catch is the simplest method of handling exceptions. Put the code you want to run in the try block, and any Java exceptions that the code throws are caught by one or more catch blocks. This method will catch any type of Java exceptions that get thrown. This is the simplest mechanism for handling exceptions.

What causes an exception to be thrown?

An exception is thrown for one of three reasons: An abnormal execution condition was synchronously detected by the Java virtual machine. Such conditions arise because: evaluation of an expression violates the normal semantics of the language, such as an integer divide by zero, as summarized in §15.6.

What happens if a thrown exception is not caught in Java?

What happens if an exception is not caught? If an exception is not caught (with a catch block), the runtime system will abort the program (i.e. crash) and an exception message will print to the console.

How do you force throw an exception in Java?

Throwing an exception is as simple as using the "throw" statement. You then specify the Exception object you wish to throw. Every Exception includes a message which is a human-readable error description.


1 Answers

All your problems derive from this

byte[] encrypted = cipher.doFinal(toEncrypt.getBytes()); return encrypted; 

Which are enclosed in a try, catch block, the problem is that in case the program found an exception you are not returning anything. Put it like this (modify it as your program logic stands):

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     } } 

For the second one you must catch the Exception from the encrypt method call, like this (also modify it as your program logic stands):

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 exception     } } 

The lessons you must learn from this:

  • A method with a return-type must always return an object of that type, I mean in all possible scenarios
  • All checked exceptions must always be handled
like image 106
victor hugo Avatar answered Oct 14 '22 00:10

victor hugo