Throwable
. By catching Throwable
, it is possible to handle all unexpected conditions.There are several scenarios where it is good practice to catch
Throwable
. For example, in a server application, the threads that handle requests should catch Throwable
and relay any errors or exceptions to the client. Another scenario is a long-running thread that performs some background activity. Such threads should catch Throwable
, log any errors or exceptions, and then continue functioning.It is rarely good practice for a method in a library to catch
Throwable
. In general, errors and exceptions should not be masked from the caller.This example demonstrates a long-running thread that catches
Throwable
and logs the exception.class BgThread extends Thread {
// Create a logger. For more information on the logging api's,
Logger logger = Logger.getLogger("com.mycompany.mypackage");
BgThread() {
// As a daemon thread, this thread won't prevent the application from exiting
setDaemon(true);
}
// Set to true to shut down this thread
boolean stop = false;
public void run() {
while (!stop) {
try {
// Perform work here
} catch (Throwable t) {
// Log the exception and continue
logger.log(Level.SEVERE, "Unexception exception", t);
}
}
}
}
No comments:
Post a Comment