Contents of page :
- What is setDefaultUncaughtExceptionHandler method?
- setDefaultUncaughtExceptionHandler method features >
- Program to demonstrate setDefaultUncaughtExceptionHandler method >
- Output analyzation >
We can use setDefaultUncaughtExceptionHandler method which can handle uncaught unchecked(runtime) exception generated in run() method.
What is setDefaultUncaughtExceptionHandler method?
setDefaultUncaughtExceptionHandler method sets the default handler which is called when a thread terminates due to an uncaught unchecked(runtime) exception.
setDefaultUncaughtExceptionHandler method features >
- setDefaultUncaughtExceptionHandler method sets the default handler which is called when a thread terminates due to an uncaught unchecked(runtime) exception.
- setDefaultUncaughtExceptionHandler is a static method method, so we can directly call Thread.setDefaultUncaughtExceptionHandler to set the default handler to handle uncaught unchecked(runtime) exception.
- It avoids abrupt termination of thread caused by uncaught runtime exceptions.
Defining setDefaultUncaughtExceptionHandler method >
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){
public void uncaughtException(Thread thread, Throwable throwable) {
System.out.println(thread.getName() + " has thrown " + throwable);
}
});
|
Program to demonstrate setDefaultUncaughtExceptionHandler method >
class MyRunnable implements Runnable {
String str;
/*
* method will terminate due to an uncaught unchecked(runtime) exception.
*/
public void run() {
/* String wasn't initialized, so performing any operation
* on it will throw NullPointerException and it will caught by
* default handler defined in main method.
*/
str.equals("abc");
}
}
/** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
public class MyClass {
public static void main(String[] args) {
Thread thread1 = new Thread(new MyRunnable(),"thread-1");
/*
* setDefaultUncaughtExceptionHandler method sets the default handler
* which is called when a thread terminates due to an
* uncaught unchecked(runtime) exception.
*
*/
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){
public void uncaughtException(Thread thread, Throwable throwable) {
System.out.println(thread.getName() + " has thrown " + throwable);
}
});
thread1.start();
}
}
/*OUTPUT
thread-1 has thrown java.lang.NullPointerException
*/
|
Output analyzation >
In the above program we have defined setDefaultUncaughtExceptionHandler method. And in run method str wasn't initialized, calling str.equals("abc"); throwed NullPointerException and it was caught by default handler defined in main method.
RELATED LINKS>
Important Thread methods (salient features, usage with programs)>
Sleep() method in threads - 10 key features with programs
Wait() and notify() methods- Definition, 8 key features, solving consumer producer problem with & without these methods and consequences of not using wait() and notify() methods.
Daemon threads - 12 salient features of Daemon Thread
2 alternate ways to stop thread, as stop() method is deprecated
Join() method - 10 salient features of join
Thread isAlive() method
interrupt() method of thread in java
holdsLock(object) method to find whether current thread holds the lock on monitor of specified object.
Thread priorities - setPriority() and getPriority() methods
Using Suspend and resume method in threads
Methods for Adding ShutdownHook and handling uncaught runtime exception >