@Override public void run() { currentTask = this; try { runnable.run(); } catch (Throwable e) { LongTaskErrorHandler err = errorHandler; finished(this); if (progress != null) { progress.finish(); } if (err != null) { err.fatalError(e); } else if (defaultErrorHandler != null) { defaultErrorHandler.fatalError(e); } else { Logger.getLogger("").log(Level.SEVERE, "", e); } } currentTask = null; finished(this); if (progress != null) { progress.finish(); } }