Recent Posts

Saturday, 16 July 2016

Exception Handling Tutorial Part 3


Customized Exception
     Based on our programming requirement some times we have to create our own exception, which are nothing but “Customized Exception”.
E.g
TooYoungException.
TooOldException.
InSufficiantFundsTransfer.
class TooYoungException extends RuntimeException {
   TooYoungException(String s) {
      super(s);
   }
}
class TooOldException extends RuntimeException {
   TooOldException(String s) {
      super(s);
   }
}

class CustomExceptionDemo {
   public static void main(String arg[]) {
      int age = Integer.parseInt(arg[0]);
      if(age > 60) {
         throw new TooOldException("Younger age is already over");
      } else if(age < 18)
         throw new TooYoungException("Please wait same more time");
      }
      System.out.println("Thanks for register");
   }
}


Note
     It is recommended to define customized exceptions as unchecked. i.e our custom exceptions class should extends R.E either directly or indirectly.
Top 10 Exceptions
All Exceptions are divided into two categories

JVM Exceptions
     Raised automatically by the JVM when ever a particular condition occurs.
E.g
ArithmeticException, NullPointerException.
ProgramaticExceptions
     These are raised programmatically because of programmers code or API’s developers Code.
E.g
IllegalArgumentException, NumberFormatException.

1. NullPointerException
     It is the direct child class of RuntimeException and it is unchecked. Thrown automatically by the JVM when ever we are performing any operation on null.
String s = null
System.out.println(s.length()); -> NullPointerException 
2. StackOverFlowError
     It is the child class of Error and it is unchecked. Raised automatically by the JVM when ever we are performing recursive method invocation.
class Test {
   public static void m1() {
      m1();
   }
   public static void main(String arg[]) {
      m1();
   }
}
3. ArrayIndexOutOfBoundsException
     It is the child class of RuntimeException and it is unchecked thrown automatically by the JVM when ever we are accessing an array element with invalid int index.(Out of range index)
int [] a = {10, 20, 30};
System.out.println(a[0]);
System.out.println(a[20]); -> ArrayIndexOutOfBoundsException.
4. ClassCastException
     It is the child class of RuntimeException and it is unchecked. Thrown automatically by the JVM when ever we are trying to typecast parent class object to the child type.
String s = "raju";
Object o = (Object)s // Fine

Object o = new Object();
String s = (String)o;  // Error
R.E: ClassCastException.
5. NoClassDefFoundError
     It is the child class of Error and it is unchecked. Thrown automatically by the JVM if the required .class file is not available.
E.g
java Ashok
     If Ashok.class file is not available we will get NoClassDefFoundError.

6. ExceptionInInitializerError
     It is child class of Error and it is unchecked. Raised automatically by the JVM when ever an Exception occur during initialization of static variables or execution of static blocks.
E.g
class Test {
   static int i = 10/0;
}
class Test {
   static {
      String s = null;
      System.out.println(s.length());
   }
}

7. IllegalArgumentException
     It is the child class of RuntimeException and it is unchecked thrown explicitly by the programmer or API developer when ever we are invoking a method with inappropriate or
invalid argument.
E.g
     The valid range of Thread priority is 1 – 10 , if we are trying to invoke setpriority method with 100 as argument we will get IllegalArgumentException.
public void setPriority(int i) {
   if (i>10 || i<11) {
      throw new IllegalArgumentException();
   }
}
8. NumberFormatException
     It is the child class of Illegal Argument and it is unchecked. Thrown programmatically when ever we are attempting to convert String to Number type but the String is not formatted properly
E.g
String s = 10;
int i = Integer.parseInt(s); // Fine

String s = "ten";
int i = Integer.parseInt(s); -> NumberFormatException
9. IlleaglStateExcepiton
     It is the child class of RuntimeException and it is unchecked. Thrown programmatically to indicate that a method has invoked at an inappropriate time.
E.g
After invalidating a session object we are not allowed to call any method on that object other wise IllegalStateException.
After comiting the response we are not allowed to redirect or forward otherwise IlleagalStateException
After starting a thread we are not allowed to start the same thread once again otherwise IlleagalStateException.
MyThread t = new MyThread();
t.start();
t.start(); -> IllegalThreadStateException 
10. AssertionError
     It is the child class of Error and it is unchecked thrown programmatically to indicate Assertion fails.
E.g
Assert(false); -> AssertionError

Next Tutorial  Assertions Tutorial

Previous Tutorial  Exception Handling Tutorial Part 2

No comments:

Post a Comment