【问题标题】:Reporting Errors in a multi-threaded Java-based Application在基于 Java 的多线程应用程序中报告错误
【发布时间】:2012-06-16 08:40:22
【问题描述】:

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

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

【问题讨论】:

  • “在基于 Java 的多线程应用程序中报告错误”您能否详细说明一下。您真的需要多线程应用程序吗?
  • 我知道您是新用户,因此可能值得阅读常见问题解答。特别是stackoverflow.com/faq#dontask,它描述了不能在 SO 上提出的问题。

标签: java multithreading error-handling


【解决方案1】:

你有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();

【讨论】:

    【解决方案2】:

    你可以写你的 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);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-11
      • 1970-01-01
      • 2012-04-12
      • 2014-01-23
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多