Eclipse rcp 拦截Eclipse4平台异常

Eclipse rcp 拦截Eclipse4平台异常,eclipse-rcp,e4,Eclipse Rcp,E4,使用EclipseRCP3.x,可以创建自定义AbstractStatusHandler来拦截平台异常。一种方法是重写ApplicationWorkbenchHadVisor类中的getWorkbenchErrorHandler()方法,如下所示: @Override public synchronized AbstractStatusHandler getWorkbenchErrorHandler() { if (m_errorHandler == nu

使用EclipseRCP3.x,可以创建自定义AbstractStatusHandler来拦截平台异常。一种方法是重写ApplicationWorkbenchHadVisor类中的getWorkbenchErrorHandler()方法,如下所示:

    @Override
    public synchronized AbstractStatusHandler getWorkbenchErrorHandler()
    {
        if (m_errorHandler == null)
        {
            m_errorHandler = new MyWorkbenchErrorHandler(this);
        }
        return m_errorHandler;
    }
在Eclipse论坛、stackoverflow和Lars Vogel Eclipse4书中做了大量研究之后,我还没有找到一种使用e4实现这一点的等效方法


任何帮助都将不胜感激。

您可以将我们自己的
IEventLoopAdvisor
放到上下文中。在生命周期处理程序中的
@postcontractcreate
上可以执行此操作

context.set(IEventLoopAdvisor.class, new IEventLoopAdvisor() {
        @Override
        public void eventLoopException(Throwable exception) {
            ... handle exception here ...
        }

        ...
    });

如果上下文中没有
IEventLoopAdvisor
,平台将使用默认设置。您可以在
PartRenderingEngine
中看到平台是如何做到这一点的(在写第1102行时):


所有使用这个的东西似乎都在“org.eclipse.ui.xxx”插件中,所以它似乎根本不适用于e4。@greg-449这正是问题所在。全局错误处理是一个非常基本的功能,我很难理解为什么我找不到关于如何在E4S上执行此操作的信息。这实际上不是全局错误处理,它似乎只被org.eclipse.UI插件中的各种UI操作和对话框使用-e4中没有这些操作和对话框的等价物。谢谢你的回答。我们发现,我们可以通过使用Platform.addLogListener(…)实现我们想要的。通过这种方式,我们可以了解平台处理的异常情况。
IEventLoopAdvisor
位于
内部
包中,因此不属于官方API的一部分