Saveendra Ekanayake Saveendra Ekanayake - 1 month ago 9
Java Question

Java compile time checked exception

Exception
and
IOException
both are compile time checked exceptions.

But, we cant use
IOException
within catch block. But we can use
Exception
within catch block what is the reason for it.

import java.io.*;
class Demo{
public static void main(String args[]){
try{

}catch(IOException e){ // Does not compile

}

try{

}catch(Exception e){ // Compile

}
}
}

Answer

You cannot catch a checked exception that is never thrown in a try block, except for Exception (or Throwable). This behavior is specified by the JLS, Section 11.2.3:

It is a compile-time error if a catch clause can catch checked exception class E1 and it is not the case that the try block corresponding to the catch clause can throw a checked exception class that is a subclass or superclass of E1, unless E1 is Exception or a superclass of Exception.

Comments