Checked Exception
There are many exceptions in programming which occurs regularly but there are some exceptions in the program will be checked by compiler at compile time, those exceptions are called Checked Exceptions. Suppose some code within a method throws a checked exception, then the method must either handle the exception or it must specify the exception using throws keyword.
Example: Some checked exceptions in java are FileNotFoundException, EndOfFileException etc.
class Main { public static void main(String[] args) { FileReader file = new FileReader("D:temptemp.txt"); BufferedReader fileInput = new BufferedReader(file); // Do processing with file and close it as below fileInput.close(); } }
The above program doesn’t compile, because the function main() uses FileReader() and FileReader() throws a checked exception FileNotFoundException. To fix the above program, we either need to specify list of exceptions using throws, or we need to use try-catch block. Since FileNotFoundException is a subclass of IOException, we can just specify IOException in the throws list and make the above program compiler-error-free.
class Main { public static void main(String[] args) throws IOException{ FileReader file = new FileReader("D:temptemp.txt"); BufferedReader fileInput = new BufferedReader(file); // Do processing with file and close it as below fileInput.close(); } }
Unchecked Exception
As we told above there are many exceptions in the programming, some occurs regularly are checked and another some exceptions which do not occur regularly in a program, and compiler will not check for those exceptions, these kind of exceptions are called Unchecked Exceptions. Means unchecked are the exceptions that are not checked at compiled time by compiler unlike checked exceptions. In Java exceptions under Error and RuntimeException classes are unchecked exceptions, everything else under throwable is checked.
Example: Some unchecked exceptions in java are ArithmeticException, NullPointerException etc.
class Example{ public static void main(String[] args){ System.out.println(10/0); //Arithmetic Exception } }
The above program should throw “Arithmetic Exception” as division with “0” is not allowed, but it compiles fine, only it throws ArithmeticException when run. The compiler allows it to compile, because ArithmeticException is an unchecked exception.