Syntax of throws keyword:
void method_name() throws exception_class_name{
...
}
Which exception should we declare?
checked exception only, because:
- unchecked Exception: under your control so correct your code.
- error: beyond your control e.g. you are unable to do anything if there occurs VirtualMachineError or StackOverflowError.
Program which describes that checked exceptions can be propagated by throws keyword.
import java.io.IOException;
class Simple{
void m()throws IOException{
throw new IOException("device error");//checked exception
}
void n()throws IOException{
m();
}
void p(){
try{
n();
}catch(Exception e){System.out.println("exception handled");}
}
public static void main(String args[]){
Simple obj=new Simple();
obj.p();
System.out.println("normal flow...");
}
}
exception handled
normal flow…
Rule: If you are calling a method that declares an exception, you must either caught or declare the exception.
There are two cases:
- Case1:You caught the exception i.e. handle the exception using try/catch.
- Case2:You declare the exception i.e. specifying throws with the method.
Case1: You handle the exception
In case you handle the exception, the code will be executed fine whether exception occurs during the program or not.
import java.io.*;
class M{
void method()throws IOException{
throw new IOException("device error");
}
}
class Test{
public static void main(String args[]){
try{
Test t=new Test();
t.method();
}catch(Exception e){System.out.println("exception handled");}
System.out.println("normal flow...");
}
}
exception handled
normal flow…
Case 2: You declare the exception
- In case you declare the exception, if exception does not occur, the code will be executed fine.
- In case you declare the exception if exception occurs, an exception will be thrown at runtime because throws does not handle the exception.
A)Program if exception does not occur
import java.io.*;
class M{
void method()throws IOException{
System.out.println("device operation performed");
}
}
class Test{
public static void main(String args[])throws IOException{//declare exception
Test t=new Test();
t.method();
System.out.println("normal flow...");
}
}
device operation performed
normal flow…
B)Program if exception occurs
import java.io.*;
class M{
void method()throws IOException{
throw new IOException("device error");
}
}
class Test{
public static void main(String args[])throws IOException{//declare exception
Test t=new Test();
t.method();
System.out.println("normal flow...");
}
}
Runtime Exception

