java.lang.Throwable class :
public class java.lang.Throwable implements java.io.Serializable {
static final boolean $assertionsDisabled;
publicjava.lang.Throwable();
publicjava.lang.Throwable(java.lang.String);
publicjava.lang.Throwable(java.lang.String, java.lang.Throwable);
publicjava.lang.Throwable(java.lang.Throwable);
protectedjava.lang.Throwable(java.lang.String, java.lang.Throwable, boolean, boolean);
publicjava.lang.StringgetMessage();
publicjava.lang.StringgetLocalizedMessage();
public synchronized java.lang.ThrowablegetCause();
public synchronized java.lang.ThrowableinitCause(java.lang.Throwable);
publicjava.lang.StringtoString();
public void printStackTrace();
public void printStackTrace(java.io.PrintStream);
public void printStackTrace(java.io.PrintWriter);
public synchronized java.lang.ThrowablefillInStackTrace();
publicjava.lang.StackTraceElement[] getStackTrace();
public void setStackTrace(java.lang.StackTraceElement[]);
nativeintgetStackTraceDepth();
nativejava.lang.StackTraceElementgetStackTraceElement(int);
public final synchronized void addSuppressed(java.lang.Throwable);
public final synchronized java.lang.Throwable[] getSuppressed();
static {};
}
java.lang.Exception class :
public class java.lang.Exception extends java.lang.Throwable {
static final long serialVersionUID;
publicjava.lang.Exception();
publicjava.lang.Exception(java.lang.String);
publicjava.lang.Exception(java.lang.String, java.lang.Throwable);
publicjava.lang.Exception(java.lang.Throwable);
protectedjava.lang.Exception(java.lang.String, java.lang.Throwable, boolean, boolean);
}
java.lang.RuntimeException :
public class java.lang.RuntimeException extends java.lang.Exception {
static final long serialVersionUID;
publicjava.lang.RuntimeException();
publicjava.lang.RuntimeException(java.lang.String);
publicjava.lang.RuntimeException(java.lang.String, java.lang.Throwable);
publicjava.lang.RuntimeException(java.lang.Throwable);
protectedjava.lang.RuntimeException(java.lang.String, java.lang.Throwable, boolean, boolean);
}
Important Methods:
Access Modifier: - public
Member Type: - Instance Method
Return Type: - void
Method Name: - printStackTrace()
Functionality: - This method is an Instance method of java.lang.Throwable class, when we invoke this method along with Throwable type object then it prints following information:
a. Type of Exception occurs.
b. Reason of Exception.
c. Location of the Exception.
Access Modifier: - public
Member Type: - Instance Method
Return Type: - java.lang.String
Method Name: - getMessage()
Functionality: - We use getMessage() method of java.lang.Throwable class to get exact reason of the exception that why exactly it occurred.
Access Modifier: - public
Member Type: - Instance Method
Return Type: - Throwable
Method Name: - getCause()
Functionality: - Returns the cause of this Throwable or null if the cause is nonexistent or unknown. (The cause is the Throwable that caused this Throwable to get thrown.)
Important Built-In Exception:
• The ArrayIndexOutOfBoundsException is an Unchecked Exception which occurs when we perform operation using an index of array which is not existing actually.
• API of java.lang.ArrayIndexOutOfBoundsException:
C:\Users\Rahul>javap java.lang.ArrayIndexOutOfBoundsException Compiled from "ArrayIndexOutOfBoundsException.java" public class java.lang.ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException { public java.lang.ArrayIndexOutOfBoundsException(); public java.lang.ArrayIndexOutOfBoundsException(int); public java.lang.ArrayIndexOutOfBoundsException(java.lang.String); }
class JTC{
public static void main(String arg[]){
System.out.println(arg[0]);
}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at JTC.main(test.java:3)
• java.lang.NegativeArraySizeException is an Unchecked Exception which occurs when we try to create an Array along with –ve length.
• API of java.lang.NegativeArraySizeException:
C:\Users\Rahul\Desktop>javap java.lang.NegativeArraySizeException Compiled from "NegativeArraySizeException.java" public class java.lang.NegativeArraySizeException extends java.lang.RuntimeException { public java.lang.NegativeArraySizeException(); public java.lang.NegativeArraySizeException(java.lang.String); }
class JTC{
public static void main(String arg[]){
int ar1[] = new int[-1];
}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC Exception in thread "main" java.lang.NegativeArraySizeException at JTC.main(test.java:3)
• java.lang.NullPointerException occurs when we access instance member of a class such as instance variable or instance method along with a reference variable which is containing null value.
• API of java.lang.NullPointerException:
C:\Users\Rahul\Desktop>javap java.lang.NullPointerException Compiled from "NullPointerException.java" public class java.lang.NullPointerException extends java.lang.RuntimeException { public java.lang.NullPointerException(); public java.lang.NullPointerException(java.lang.String); }
class JTC{
public static void main(String arg[]){
A a1 = null;
System.out.println(a1.a);
}
}
class A{
int a = 10; // Instance Variable
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC Exception in thread "main" java.lang.NullPointerException at JTC.main(test.java:4)
• Java.lang.ClassCastException is an Unchecked Exception, it occurs when we try to type cast the super type object into sub type.
• API of java.lang.ClassCastException:
C:\Users\Rahul\Desktop>javap java.lang.ClassCastException Compiled from "ClassCastException.java" public class java.lang.ClassCastException extends java.lang.RuntimeException { public java.lang.ClassCastException(); public java.lang.ClassCastException(java.lang.String); }
class JTC{
public static void main(String arg[]){
A a1 = null;
System.out.println(a1.a);
}
}
class A{
int a = 10; // Instance Variable
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B at JTC.main(test.java:3)
• java.lang.CloneNotSupportedException is a Checked Exception so as we discussed we must have to handle it or use throws keyword. java.lang.CloneNotSupportedException occurs when we try to create a clone of an existing object of a class which is not implementing java.lang.Cloneable interface using clone() method of java.lang.Object class.
• API of java.lang.CloneNotSupportedException:
C:\Users\Rahul\Desktop>javap java.lang.CloneNotSupportedException Compiled from "CloneNotSupportedException.java" public class java.lang.CloneNotSupportedException extends java.lang.Exception { public java.lang.CloneNotSupportedException(); public java.lang.CloneNotSupportedException(java.lang.String); }
class JTC{
public static void main(String arg[]) throws CloneNotSupportedException{
JTC j1 = new JTC();
JTC clone = (JTC) j1.clone();
}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC Exception in thread "main" java.lang.CloneNotSupportedException: JTC at java.lang.Object.clone(Native Method) at JTC.main(test.java:4)
• java.lang.NumberFormatException is an Unchecked Exception and it occurs when we try of parse from String which is not in number format into number data such as byte, short, int and etc. using parse method such as parseInt(), parseFLoat() and etc.
• API of java.lang.NumberFormatException:
C:\Users\Rahul\Desktop>javap java.lang.NumberFormatException Compiled from "NumberFormatException.java" public class java.lang.NumberFormatException extends java.lang.IllegalArgumentException { static final long serialVersionUID; public java.lang.NumberFormatException(); public java.lang.NumberFormatException(java.lang.String); static java.lang.NumberFormatException forInputString(java.lang.String); }
class JTC{
public static void main(String arg[]){
int a = Integer.parseInt(arg[0]);
System.out.println(a);
}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC 10 10 C:\Users\Rahul\Desktop>java JTC abc Exception in thread "main" java.lang.NumberFormatException: For input string: "abc" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at JTC.main(test.java:3)
• It is a Checked Exception and it occurs when we try to load a class which is not existing on location using forName() method of java.lang.Class.
• API of java.lang.ClassNotFoundException:
C:\Users\Rahul\Desktop>javap java.lang.ClassNotFoundException Compiled from "ClassNotFoundException.java" public class java.lang.ClassNotFoundException extends java.lang.ReflectiveOperationException { public java.lang.ClassNotFoundException(); public java.lang.ClassNotFoundException(java.lang.String); public java.lang.ClassNotFoundException(java.lang.String, java.lang.Throwable); public java.lang.Throwable getException(); public java.lang.Throwable getCause(); }
class JTC{
public static void main(String arg[]) throws ClassNotFoundException{
Class.forName(arg[0]);
}
}
class A{
static{
System.out.println("SB in class A");
}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC A SB in class A C:\Users\Rahul\Desktop>java JTC Hello Exception in thread "main" java.lang.ClassNotFoundException: Hello at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at JTC.main(test.java:3)
• It is a Checked Exception and generally it occurs when we create an object of a class using java.lang.Class.newInstance() and that class is having constructor with private Access Modifier.
• API of java.lang.IllegalAccessException:
C:\Users\Rahul\Desktop>javap java.lang.IllegalAccessException Compiled from "IllegalAccessException.java" public class java.lang.IllegalAccessException extends java.lang.ReflectiveOperationException { public java.lang.IllegalAccessException(); public java.lang.IllegalAccessException(java.lang.String); }
class JTC{
public static void main(String arg[]) throws IllegalAccessException, InstantiationException{
A.class.newInstance();
}
}
class A{
private A(){}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC Exception in thread "main" java.lang.IllegalAccessException: Class JTC can not access a member of class A with modifiers "private" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102) at java.lang.Class.newInstance(Class.java:436) at JTC.main(test.java:3)
• java.lang.ArithmeticException is an Unchecked Exception which occurs when an Integral Literals by 0.
• API of java.lang.ArithmeticException:
C:\Users\Rahul\Desktop>javap java.lang.ArithmeticException Compiled from "ArithmeticException.java" public class java.lang.ArithmeticException extends java.lang.RuntimeException { public java.lang.ArithmeticException(); public java.lang.ArithmeticException(java.lang.String); }
class JTC{
public static void main(String arg[]){
System.out.println(Integer.parseInt(arg[0])/Integer.parseInt(arg[1]));
}
}
C:\Users\Rahul\Desktop>javac test.java C:\Users\Rahul\Desktop>java JTC 10 2 5 C:\Users\Rahul\Desktop>java JTC 10 0 Exception in thread "main" java.lang.ArithmeticException: / by zero at JTC.main(test.java:3)