Is it possible to determine which exception was occurred when it was catched by finally only?
Below is excerpt from standard ThreadPoolExecutor code:
    public void run() {
        try {
            Runnable task = firstTask;
            firstTask = null;
            while (task != null || (task = getTask()) != null) {
                runTask(task);
                task = null;
            }
        } finally {
            workerDone(this);
        }
    }
I.e. here is no catch. My debugger stops on workerDone() call indicating RuntimeException occurred, but since here is no exception variable I see no way to know error message or something.
 
                        
You should be able to add an "exception breakpoint" in the debugger for uncaught exceptions. Typically, this is a tab right next to the "variables" tab in the Debug perspective.