Thanks Peter,
I had a feeling it wasn't going to be easy. Essentially, I want to catch all unusual conditions, errors, and exceptions. I don't really care how critical they are - I just want to know if they happen.
Eclipse seems to pull this off - if in debugging mode, it can isolate the code and take you to the exact line. I'm not building a development tool though!
I saw this in the Java Developers Almanac, but I don't really get it:
"All errors and exceptions extend from 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,
// see e385 The Quintessential Logging Program
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);
}
}
}
}