我目前正在开发一个基于Java的多线程应用程序,它提供GUI并通过网络访问服务。
是否有任何模式,最佳实践,库,框架或API用于在基于Java的系统中报告错误?
答案 0 :(得分:2)
你有Thread.UncaughtExceptionHandler
用于处理线程中的错误。
Thread t = new Thread(task);
// add exception handler
t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException(Thread t, Throwable e) {
// do exception handling
}
});
t.start();
答案 1 :(得分:1)
您可以编写Task Tracker
,这不是Observer DesignPatter的实现。
public class TaskTracker {
private final List<ErrorListener> listeners = new ArrayList<ErrorListener>();
public Runnable wrap(final Runnable r) {
return new Runnable() {
public void run() {
try { r.run(); }
catch (Throwable t) {
for (ErrorListener el : listeners)
el.error(t, this);
}
}
};
}
public void addListener(ErrorListener el) { listeners.add(el); }
public void removeListener(ErrorListener el) { listeners.remove(el); }
public static interface ErrorListener {
void error(Throwable t, Runnable r);
}
}