try-catch doesn't catch IOException

ioexception, java, try-catch

Solution

It is because none of the operations you perform inside `try/catch` throws IOException.

As per Scanner javadoc

Most of the Scanner class methods throws either `FileNotFoundException` (Which is not applicable in your case because not reading from file) (or) `IllegalArgumentException` (or) `IllegalStateException`

You need to change `IOException` to either of above exceptions (or) remove try/catch.

Problem

In the following code, I get the `Unreachable catch block for IOException`. This exception is never thrown from the try statement body error(underlined) with the `IOException` in `} catch (IOException e){` what am I doing wrong? ``` class driver { public static void main(String[] args) { // TODO Auto-generated method stub Customer forrest = new Customer("Forrest Gump", 1, "42 New Street, New York, New York"); Customer random = new Customer("Random Name", 2, "44 New Street, New York, New York"); Customer customer[] = { null, forrest, random }; int whichOption = 1; int id = 0; char action = ' '; char accSrc = ' '; char accDest = ' '; double amount = 0; BankAccount src = null; do { try{ // process JOptionPane input information String input = JOptionPane .showInputDialog("Please enter your transaction information: "); Scanner s = new Scanner(input); id = Integer.parseInt(s.next()); action = Character.toUpperCase((s.next().charAt(0))); if (action == 'T') { amount = s.nextDouble(); accSrc = s.next().charAt(0); accDest = s.next().charAt(0); } else if (action == 'G' || action == 'I') { accSrc = s.next().charAt(0); } else { // if D,W amount = s.nextDouble(); accSrc = s.next().charAt(0); } } catch (IOException e){ } // taking action accordingly (T)ransfer, (D)eposit, (W)ithdraw, (I)nterest if (action == 'T') { (customer[id].getAccount(accSrc)).transfer(amount, customer[id].getAccount(accDest)); } else if (action == 'G') { System.out.println("The current balance on your " + accSrc + " account is " + customer[id].getAccount(accSrc).getBalance() + "\n"); } else if (action == 'D') { (customer[id].getAccount(accSrc)).deposit(amount); } else if (action == 'W') { (customer[id].getAccount(accSrc)).withdraw(amount); } else if (action == 'I') { (customer[id].getAccount(accSrc)).computeInterest(); } whichOption = JOptionPane .showConfirmDialog(null , "Do you want to continue?"); System.out.println("The balance on " + customer[id].getName() + " auto account is " + customer[id].A.balance); System.out.println("The balance on " + customer[id].getName() + " savings account is " + customer[id].S.balance); System.out.println("The balance on " + customer[id].getName() + " checkings account is " + customer[id].C.balance); System.out.println("The balance on " + customer[id].getName() + " loan account is " + customer[id].L.balance + "\n"); } while (whichOption == 0); } } ```

Original source