报告基于多线程Java的应用程序中的错误

时间:2012-06-13 11:36:48

标签: java multithreading error-handling

我目前正在开发一个基于Java的多线程应用程序,它提供GUI并通过网络访问服务。

是否有任何模式,最佳实践,库,框架或API用于在基于Java的系统中报告错误?

2 个答案:

答案 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);
}
}