Try-catch won't catch an IOException

In the following code, I get an Unreachable catch block for IOException . This exception is never thrown from a try statement body error (underlined) with 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); } } 
+4
source share
6 answers

This is because none of the operations performed inside try/catch throw an IOException.

Like a javadoc scanner

Most methods of the Scanner class throw either a FileNotFoundException (which is not applicable in your case, because it cannot be read from a file) (or) IllegalArgumentException (or) IllegalStateException

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

+11
source

You can remove IOException and try catch, since none of the statements inside try catch throws this exception

+4
source

It seems that you are not doing anything in this try block throw an IOException

+3
source

There is no method call in that the try block throws an IOException , so catch is an unreachable code.

You can safely remove both try and catch, as this situation will never happen.

+3
source

Your catch empty, which means that you are not going to handle the exception at all. You probably had code that made you catch it, but now it's gone. Just remove all surrounding try-catch and there will be no more problems.

+3
source

try/catch block is empty, and the code does not throw an IOException , but it may raise other exceptions.

+1
source

Source: https://habr.com/ru/post/1445864/


All Articles