just look at program below..
import java.io.*;
import java.rmi.*;
class class1
{
public void m1() throws RemoteException
{
System.out.println(\"m1 in class1
When overriding a method that throws an Exception you can only throw the same Exception or a more specific subtype of that Exception.
RemoteException is a subtype of IOException. Therefore when the parent method throws IOException your child method can throw RemoteException.
You can also think it through logically. If a child method threw a broader Exception than the parent method, then the method might throw an Exception that doesn't match the parent.