exception handling


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

exception handling

  1. 1.
  2. 2. Exception Handling in Java Types of Errors 1.Compile time All syntax errors identified by java compiler. No class file is created when this occurs. So it is necessary to fix all compile time errors for successful compilation. Egs: Missing of semicolon, use of = instead of ==
  3. 3. Exception Handling in Java 2.Run time Some pgms may not run successfully due to wrong logic or errors like stack overflow. Some of the Common run time errors are: Division by 0 Array index out of bounds Negative array size etc..
  4. 4. Exception Handling in Java <ul><li>Exception is a condition caused by a run time error in the program. When the java interpreter identifies an error such as division by 0 it creates an Exception object and throws it </li></ul><ul><li>Definition:  </li></ul><ul><li>An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. </li></ul><ul><li>Is defined as a condition that interrupts the normal flow of operation within a program. </li></ul>
  5. 5. Exception Handling in Java <ul><li>Java allows Exception handling mechanism to handle various exceptional conditions. When an exceptional condition occurs, an exception is said to be thrown. </li></ul><ul><li>For continuing the program execution, the user should try to catch the exception object thrown by the error condition and then display an appropriate message for taking corrective actions. This task is known as Exception handling </li></ul>
  6. 6. Exception Handling in Java This mechanism consists of : 1. Find the problem(Hit the Exception) 2. Inform that an error has occurred(Throw the Exception) 3. Receive the error Information(Catch the Exception) 4. Take corrective actions(Handle the Exception)
  7. 7. Exception Handling in Java <ul><li>In Java Exception handling is managed by 5 key words: </li></ul><ul><li>try </li></ul><ul><li>catch </li></ul><ul><li>throw </li></ul><ul><li>throws </li></ul><ul><li>finally </li></ul>
  8. 8. Exception Handling in Java Throwable Exception error InterruptedException (checked exception) RuntimeException (unchecked exception) Exception Hierarchy Package java.lang
  9. 9. Exception Handling in Java <ul><li>Unchecked exception: </li></ul><ul><ul><li>These exception need not be included in an method’s throws list </li></ul></ul><ul><ul><li>The compiler does not check to see if a method handles or throws these exception </li></ul></ul><ul><ul><li>these are subclasses of RuntimeException </li></ul></ul><ul><ul><li>The compiler doesn't force client programmers either to catch the exception or declare it in a throws clause. </li></ul></ul><ul><ul><li>Class Error and its subclasses also are unchecked. </li></ul></ul><ul><ul><li>Checked exception: </li></ul></ul><ul><ul><ul><li>Must be included in an method’s throws list if that method can generate one of those exceptions and does not handle it itself </li></ul></ul></ul><ul><ul><ul><li>These exception defined by java.lang </li></ul></ul></ul><ul><li> </li></ul>
  10. 10. Exception Handling in Java Java’s unchecked RuntimeException subclasses defined in java.lang Exception Meaning ArithmeticException Arithmetic error, such as divide-by-zero ArrayIndexOutOfBoundsException Array index is out-of-bounds ArrayStoreException Assignment to an array element of an incompatible type ClassCastException Invalid cast EnumConstantNotPresentException An attempt is made to use an undefined enumeration value IllegalArgumentException Illegal argument used to invoke a method IllegalMonitorStateException Illegal monitor operation, such as waiting on an unlocked thread IllegalStateException Environment or application is in incorrect state IllegalThreadStateException Requested operation not compatible with current thread state IndexOutOfBoundsException Some type of index is out-of-bounds NegativeArraySizeException Array created with a negative size
  11. 11. Exception Handling in Java Exception Meaning NullPointerException Invalid use of a null reference NumberFormatException Invalid conversion of a string to a numeric format SecurityException Attempt to violate security StringIndexOutOfBoundsException Attempt to index outside the bounds of a string TypeNotPresentException Type not fount UnsupportedOperationException An unsupported operation was encountered
  12. 12. Exception Handling in Java Java’s checked Exception defined in java.lang Exception Meaning ClassNotFoundException Class not found CloneNotSupportedException Attempt to clone an object that does not implement the Cloneable interface IllegalAccessException Access to a class is denied InstantiationException Attempt to create an object of an abstract class or interface InterruptedException One thread has been interrupted by another thread NoSuchFieldException A requested field does not exist NoSuchMethodException A requested method does not exist
  13. 13. Exception Handling in Java class Ex{ public static void main(String args[]){ int a=0; int b=2/a; } } Java.lang.ArithmeticException: / by zero at Ex.main
  14. 14. Exception Handling in Java try & catch try Block Statement that causes Exception Catch Block Statement that causes Exception
  15. 15. Exception Handling in Java try { Statement: } catch (Exception-type e){ statement; }
  16. 16. Exception Handling in Java class Ex{ public static void main(String args[]){ int d,a; try{ d=0; a=10/d; System.out.println(&quot;from try&quot;); }catch(ArithmeticException e) { System.out.println(&quot;divsn by Zero&quot;); } System.out.println(&quot;after catch&quot;); } } Once an exception is thrown , program control transfers out of the try block into the catch block. Once the catch statement is executed pgm control continues with the next line following the entire try/catch mechanism.
  17. 17. Exception Handling in Java We can display the description of an Exception in a println statement by simply passing the exception as an argument. catch(ArithmeticException ae){ System.out.println(“Exception:”+ae); } o/p Exception:java.lang.ArithmeticException: /by zero
  18. 18. Common Throwable methods <ul><li>getMessage(); All throwable objects can have an associated error message. Calling this message will return the message if one present. </li></ul><ul><li>getLocalizedMessage(); gets the localized version of error message. </li></ul><ul><li>printStackTrace(); sends the stack trace to the system console. This is a list of method calls that led to the exception condition. It includes line number and file names too. Printing of the stack trace is the default behavior of a runtime exception when u don’t catch it ourselves. </li></ul>Exception Handling in Java
  19. 19. <ul><li>catch(ArithmeticException e){ </li></ul><ul><li>System.out.println(e.getMessage()); </li></ul><ul><li>//e.printStackTrace(); </li></ul><ul><li>} </li></ul><ul><li>o/p: E:JAVAPGMS>java Ex </li></ul><ul><li>/ by zero </li></ul><ul><li>catch(ArithmeticException e){ </li></ul><ul><li>e.printStackTrace(); </li></ul><ul><li>} </li></ul><ul><li>E:JAVAPGMS>java Ex </li></ul><ul><li>o/p: </li></ul><ul><li>java.lang.ArithmeticException: / by zero </li></ul><ul><li>at Ex.main(Ex.java:9) </li></ul>Use of getMessage() and printStackTrace() Exception Handling in Java
  20. 20. Exception Handling in Java Multiple catch Statement some cases, more than one exception could be raised by a single piece of code. such cases we can specify two or more catch clauses, each catching a different type of exception. when an exception thrown, each catch statement is inspected in order, and the first one whose type matches that of the exception is executed. After 1 catch statement is executed, the others are bypassed and execution continues after the try/catch block.
  21. 21. Exception Handling in Java class Ex{ public static void main(String args[]){ int d,a,len; try{ len=args.length; a=10/len; int c[]={1}; c[10]=23; } catch(ArithmeticException e){ System.out.println(&quot;divsn by Zero&quot;+e); } catch(ArrayIndexOutOfBoundsExcept ion ae){ System.out.println(&quot;Array index&quot;+ae); } System.out.println(&quot;after catch&quot;); } }
  22. 22. Exception Handling in Java In multiple catch statement exception subclasses must come before any of their superclasses. Because a catch statement that uses a superclass will catch exception of that type plus any of its subclasses. Thus a subclass would never be reached if it came after its superclass. Further java compiler produces an error unreachable code.
  23. 23. Exception Handling in Java Nested try statement try statement can be nested class Ex{ public static void main(String dd[]){ int d,a,len; try{ len=dd.length; a=10/len; System.out.println(a); try{ if(len==1) len=len/(len-len); if(len==2){ int c[]={1}; c[10]=23; } } catch(ArrayIndexOutOfBoundsExceptio n ae){ System.out.println(&quot;Array index&quot;+ae); } } catch(ArithmeticException e){ e.printStackTrace(); } } System.out.println(&quot;after catch&quot;); } }
  24. 24. <ul><li>E:JAVAPGMS>java Ex </li></ul><ul><li>java.lang.ArithmeticException: / by zero </li></ul><ul><li>at Ex.main(Ex.java:9) </li></ul><ul><li>after catch </li></ul><ul><li>E:JAVAPGMS>java Ex 20 </li></ul><ul><li>10 </li></ul><ul><li>java.lang.ArithmeticException: / by zero </li></ul><ul><li>at Ex.main(Ex.java:14) </li></ul><ul><li>after catch </li></ul><ul><li>E:JAVAPGMS>java Ex 20 30 </li></ul><ul><li>5 </li></ul><ul><li>Array indexjava.lang.ArrayIndexOutOfBoundsException: 10 </li></ul><ul><li>after catch </li></ul>Exception Handling in Java
  25. 25. Exception Handling in Java throw It is possible to throw an exception explicitly. Syntax: throw ThrowableInstance throwableInstance must b an object of type Throwable or a subclass of Throwable. By two ways we can obtain a Throwable object 1. Using parameter into a catch clause 2. Creating one with new operator
  26. 26. Exception Handling in Java class throwDemo{ public static void main(String args[]){ int size; int arry[]=new int[3]; size=Integer.parseInt(args[0]); try{ if(size<=0)throw new NegativeArraySizeException(&quot;Illegal Array size&quot;); for(int i=0;i<3;i++) arry[i]+=i+1; }catch(NegativeArraySizeException e){ System.out.println(e); throw e; //rethrow the exception } } }
  27. 27. <ul><li>E:JAVAPGMS>java throwDemo -4 </li></ul><ul><li>java.lang.NegativeArraySizeException: Illegal Array size </li></ul><ul><li>Exception in thread &quot;main&quot; java.lang.NegativeArraySizeException: Illegal Array size </li></ul><ul><li>at throwDemo.main(throwDemo.java:17) </li></ul>Exception Handling in Java
  28. 28. Exception Handling in Java throws If a method causing an exception that it doesn't handle, it must specify this behavior that callers of the method can protect themselves against the exception. This can be done by using throws clause. throws clause lists the types of exception that a method might throw. Form type methodname(parameter list) throws Exception list {//body of method}
  29. 29. Exception Handling in Java import java.io.*; class ThrowsDemo{ public static void main(String args[]) throws IOException,NumberFormatException{ int i; InputStreamReader is=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(in); i=Integer.parseInt(br.readLine()); System.out.println (i); }}
  30. 30. Exception Handling in Java <ul><li>finally </li></ul><ul><li>It creates a block of code that will be executed after try/catch block has completed and before the code following try/catch block. </li></ul><ul><li>It will execute whether or not an exception is thrown </li></ul><ul><li>finally is useful for: </li></ul><ul><ul><li>Closing a file </li></ul></ul><ul><ul><li>Closing a result set </li></ul></ul><ul><ul><li>Closing the connection established with database </li></ul></ul><ul><li>This block is optional but when included is placed after the last catch block of a try </li></ul>
  31. 31. Exception Handling in Java Form: try {} catch(exceptiontype e) {} finally {} finally finally Catch block try block
  32. 32. Exception Handling in Java Creating our own Exception class For creating an exception class our own simply make our class as subclass of the super class Exception. Eg: class MyException extends Exception { MyException (String msg){ super(msg); } }
  33. 33. Exception Handling in Java class TestMyException{ public static void main(String args[]){ int x=5,y=1000; try{ float z=(float)x/(float)y; if(z<0.01){ throw new MyException(&quot;too small number&quot;); } }catch(MyException me){ System.out.println(&quot;caught my exception&quot;); System.out.println(me.getMessage()); } finally{ System.out.println(&quot;from finally&quot;); } } }
  34. 34. <ul><li>E:JAVAPGMS>java TestMyException </li></ul><ul><li>caught my exception </li></ul><ul><li>too small number </li></ul><ul><li>from finally </li></ul>O/P: Exception Handling in Java