2

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

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

4

2 回答 2

2

你有Thread.UncaughtExceptionHandlerwhich 用于处理线程中的错误。

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();
于 2012-06-13T11:43:51.747 回答
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);
}
}
于 2012-06-13T11:49:49.433 回答