Eclipse E4 RCP 全局错误处理

Eclipse E4 RCP global error handling

我的问题和this thread中的一样:"I want to set a custom error handler, which is called each time an unexpected error occurs. How can I achieve that?"

如何在 E4 中执行此操作?在 E3 中,可以通过覆盖 ApplicationWorkbenchAdvisor

eventLoopException 方法来实现

线程链接到 another thread,其中正在扩展 StatusReporter。现在我可以扩展 StatusReporter 但当出现意外异常时不会自动调用它的方法。此外,我还收到一个不鼓励访问的警告,指出 StatusReporter 不是 API.

Another approach,wiki中提到,就是使用StatusHandler。但我不想手动调用 StatusHandler 。我想要一个自动获取未处理异常的全局处理程序...

如有任何帮助,我们将不胜感激。

谢谢, 杰汉

您可以将自己的 IEventLoopAdvisor 实现放入上下文中。 LifeCycle class 的 @PostContextCreate 方法是添加它的好地方。

IEventLoopAdvisor有两种方法:

@Override
public void eventLoopIdle(final Display display)
{
  // Called whenever the RCP is idle, you can do other things here
  // but it is very important to call 'display.sleep()'

  display.sleep();
}

@Override
public void eventLoopException(final Throwable exception)
{
  // Add code for unhandled exceptions
}

注意:IEventLoopHandler 是一个 内部 class,所以通常应该避免使用,但这种用法似乎得到了认可。

如果您想覆盖所有消息的日志记录,您可以创建自己的 class 派生自 org.eclipse.e4.core.services.log.Logger 并将其注入到 Eclipse 上下文中。