When a specific method throws an Exception that isn’t handheld the exception is passed over to the method from which that specific method was called. If that other method doesn’t handle the exception the exceptions is passed over to the previous method and so on. Eventually, the thrown exception reaches the primary method of the thread in which the code is executed.
The primary method might be the method main, when dealing with the main thread of each and every Java application or the method run, when dealing with a new thread we created in our program. If the primary method doesn’t handle the exception then the thread in which the exception was thrown stops. The other threads continue. The following code sample shows that.
public class Mosko implements Runnable
{
int number;
public Mosko(int number)
{
this.number = number;
}
@Override
public void run()
{
for(int i=1; i<number; i++)
{
System.out.println(“ping “+i+” thread name is “+Thread.currentThread().getName());
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
throw new MyException();
}
}
public class MyException extends RuntimeException
{
}
public class MoskoDemo
{
/**
* @param args
*/
public static void main(String[] args) throws MyException
{
// TODO Auto-generated method stub
new Thread(new Mosko(4)).start();
new Thread(new Mosko(8)).start();
new Mosko(12).run();
}
}
The following video clip shows the execution of this code sample.