Lab 6: Exception Handling in Java
Lab 6: Exception Handling in Java
LAB OBJECTIVE: Gain ability to handle Exception that arises during the execution of a program.
Exception in Java
The term exception is shorthand for the phrase “exceptional event”. An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program’s instructions.
Exception Handling in Java
The Exception Handling in Java is one of the powerful mechanisms to handle runtime errors so that the normal flow of the application can be maintained.
// save as Exception.javac /* Runtime Errors will occur */ class Exception{ public static void main(String []s){ int x=10/0; // divide by zero Exception System.out.println(x); System.out.println("this will not be printed"); } }
How to Handle Exception In Java
All those lines which can generate some kind of exception at the run time must be written in a block called try{} followed by catch(){} block.
// save as Exception1.java class Exception1 { public static void main(String[] s) { // keep the statements which generates some kind of exception try { // this lines causes the exception int x = 10 / 0; System.out.println(x); } // "catch" is used to catch the exception catch (ArithmeticException e) { System.out.println("exception handled"); } System.out.println("this will be printed"); } }
Output
javac Exception1.java java Exception1 exception handled this will be printed
Case 0: Another way to add try & catch block
//save as Exception2.java class Exception2{ public static void main(String s[]){ try{ int x=10/s.length; // by default jvm will create zero length of string System.out.println(x); int z[]=new int[s.length]; System.out.println("Exception handled successfully"); } catch(ArithmeticException e){ System.out.println(e); } } }
Output
F:\coreJAVA\image>javac Exception2.java F:\coreJAVA\image>java Exception2 java.lang.ArithmeticException: / by zero F:\coreJAVA\image>java Exception2 hi Rst 5 Exception handled successfully F:\coreJAVA\image>java Exception2 hi Rst 123 3 Exception handled successfully
Case 1: You can have multiple catch block with a single try block
//save as Exception3 .java class Exception3 { public static void main(String s[]) { try { int x = 10 / s.length; System.out.println(x); int z[] = new int[s.length]; z[10] = 100; System.out.println(z); } catch (ArithmeticException e) { System.out.println(e); } System.out.println("Exception handled successfully"); } } // save as Exception4 .java class Exception4 { public static void main(String s[]) { try { int x = 10 / s.length; System.out.println(x); System.out.println("Exception handled successfully"); int z[] = new int[s.length]; // this cause ArrayIndexOutOfBoundsException z[10] = 1000; System.out.println(z); } // handler for ArithmeticException catch (ArithmeticException e) { System.out.println(e); } // handler for ArrayIndexOutOfBoundsException catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException handled successfully"); } } }
Output

Case 2: Single catch(){} block can handle multiple exception
// save as Exception6.java class Exception6 { public static void main(String s[]) { try { int x = 10 / s.length; System.out.println(x); System.out.println("Exception handled successfully"); int z[] = new int[s.length]; // this cause ArrayIndexOutOfBoundsException z[100] = 1000; System.out.println(z); } // Handling Multiple Exception catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e); }catch (Throwable e) { System.out.println(e); } } }
Output
F:\coreJAVA\image>javac Exception6.java F:\coreJAVA\image>java Exception6 java.lang.ArithmeticException: / by zero F:\coreJAVA\image>java Exception6 hi vivek sir 3 Exception handled successfully java.lang.ArrayIndexOutOfBoundsException: 100
Case 3: Nested try{}catch(){}
// save as Temp1.java class Temp1{ public static void main(String s[]){ try{ // nested try block try{ int x=10/s.length; System.out.println(x); } catch(ArithmeticException e){ System.out.println(e); } try{ int z[]=new int[s.length]; z[100]=10; } catch(ArrayIndexOutOfBoundsException e){ System.out.println(e); } } catch(ArithmeticException e){} } } /* Output: F:\coreJAVA\11Exception Handling>javac Temp1.java F:\coreJAVA\11Exception Handling>java Temp1 szhdf // command line arguments 10 java.lang.ArrayIndexOutOfBoundsException: 100 */
Case 4: Finally Block
//save as FinallyBlock.java /* finally {} will execute whether exception caught or not */ class FinallyBlock { public static void main(String args[]) { try { int data = 25 / 5; System.out.println(data); } catch (NullPointerException e) { System.out.println(e); } //finally block will always execute finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } } /* Output: F:\coreJAVA\11Exception Handling>javac FinallyBlock.java F:\coreJAVA\11Exception Handling>java FinallyBlock 5 finally block is always executed rest of the code... */
Case 5: Exception occurs and not handled:
// save as FinallyBlock1.java class FinallyBlock1 { public static void main(String args[]) { try { int data = 25 / 0; System.out.println(data); } catch (NullPointerException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } } /* Output: F:\coreJAVA\11Exception Handling>javac FinallyBlock1.java F:\coreJAVA\11Exception Handling>java FinallyBlock1 finally block is always executed Exception in thread "main" java.lang.ArithmeticException: / by zero at FinallyBlock1.main(FinallyBlock1.java:5) */
Case 6: Exception occurs and Handled
//save as FinallyBlock2.java class FinallyBlock2 { public static void main(String args[]) { try { int data = 25 / 0; System.out.println(data); } catch (ArithmeticException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }
Output
F:\coreJAVA\image>javac FinallyBlock2.java F:\coreJAVA\image>java FinallyBlock2 java.lang.ArithmeticException: / by zero finally block is always executed rest of the code... F:\coreJAVA\image>java FinallyBlock2 hi java.lang.ArithmeticException: / by zero finally block is always executed rest of the code...