Ist es möglich, einen UncaughtExceptionHandler an eine TimerTask anzuhängen? (Anders als von Thread.setDefaultUncaughtExceptionHandler() aufgerufen wird)UncaughtExceptionHandler an eine TimerTask anhängen
Prost
Reiche
Ist es möglich, einen UncaughtExceptionHandler an eine TimerTask anzuhängen? (Anders als von Thread.setDefaultUncaughtExceptionHandler() aufgerufen wird)UncaughtExceptionHandler an eine TimerTask anhängen
Prost
Reiche
können Sie einen TimerTask
Proxy schreiben, die Throwable
von run
abfängt.
public final class TimerTaskCatcher extends TimerTask {
private final TimerTask orig;
private final Thread.UncaughtExceptionHandler handler;
public TimerTaskCatcher(
TimerTask orig,
Thread.UncaughtExceptionHandler handler
} {
if (orig == null || handler == null) {
throw new NullPointerException();
}
this.orig = orig;
this.handler = handler;
}
@Override public boolean cancel() {
return orig.cancel();
}
@Override public void run() {
try {
orig.run();
} catch (Throwable exc) {
handler.uncaughtException(Thread.currentThread(), exc);
}
}
@Override public long scheduledExecutionTime() {
return orig.scheduledExecutionTime();
}
}
BTW: Sie könnten java.util.concurrent
statt Timer
berücksichtigen wollen verwenden.
Ja, ich denke schon. Es gibt eine Instanz-Methode (setUncaughtExceptionHandler) in Thread
class
, die die UncaughtExceptionHandler
des Threads setzt.
In Ihrem run
Methode des TimerTask
Sie etwas tun können:
public void run() {
Thread.currentThread().setUncaughtExceptionHandler(eh);
}