[英]Eclipse E4 RCP global error handling
我的问题与该线程中的问题相同:“我想设置一个自定义错误处理程序,每次发生意外错误时都会调用该处理程序。如何实现呢?”
我如何在E4中做到这一点? 在E3中,可以通过重写ApplicationWorkbenchAdvisor
的eventLoopException
方法来实现
该线程链接到另一个正在扩展StatusReporter
线程 。 现在,我可以扩展StatusReporter
但是当发生某些意外的异常时,不会自动调用其方法。 另外,我还会收到不鼓励访问的警告,提示StatusReporter
不是API。
如Wiki中所述, 另一种方法是使用StatusHandler
。 但是我不想手动调用StatusHandler
。 我想要一个全局处理程序,该处理程序自动拾取未处理的异常...
任何帮助将不胜感激。
谢谢约翰
您可以将自己的IEventLoopAdvisor
实现IEventLoopAdvisor
上下文中。 LifeCycle类的@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
是一个内部类,因此通常应避免使用该类,但此用法似乎受到认可。
如果要覆盖所有消息的日志记录,则可以创建自己的派生自org.eclipse.e4.core.services.log.Logger
的类,并将其注入Eclipse上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.