Eclipse插件的集中式异常处理

时间:2009-11-25 12:19:10

标签: eclipse exception-handling

起初我认为这会是经常被问到的问题,但是尝试(并且失败)查询信息证明我错了。

Eclipse平台中是否有一种机制可以集中异常处理异常?

例如...... 您有插件项目连接到数据库并发出查询,其结果用于填充一些例如观点。这就像有史以来最常见的例子。 :) 几乎针对任何用户操作执行查询,从插件提供的每个UI控件开始。很可能DB Query API将特定于DB SomeDBGeneralException声明为由它抛出。没关系,你可以根据你的软件设计处理那些。但是,未经检查的可能发生的异常如何发生,例如: ,当与DB的通信因某些网络相关原因突然中断时? 如果在这种情况下想要在中心位置捕获这些异常并且例如向用户提供用户友好消息(而不是低级通信协议api消息)甚至用户可以执行以便处理的一些可能动作,那该怎么办?具体问题?

在Eclipse平台上下文中思考,问题可以改为“是否有像org.eclipse.ExceptionHandler这样的扩展点”,它允许为特定(某种过滤支持)异常声明异常处理程序,从而提供了很大的灵活性与实际处理?“

2 个答案:

答案 0 :(得分:5)

您可以覆盖WorkbenchAdvisor的public void eventLoopException(Throwable exception)

引用其javadoc:

  

代码时调用此方法   处理UI事件会抛出一个   例外。在一个完美的功能   应用程序,这种方法永远不会   叫做。在实践中,进入   在代码中存在错误时播放   触发未经检查的运行时   的例外

答案 1 :(得分:3)

是的,Eclipse确实提供了您描述的框架。

有关扩展点的详细信息,请参阅http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/ua_statushandling_defining.htm

一个起点是查看默认实现:WorkbenchErrorHandler。您需要实现自己的扩展AbstractStatusHandler的类。您可能还想查看org.eclipse.ui插件中的InternalErrorDialog。这会显示您可能不想要的堆栈跟踪,但它会扩展ErrorDialog并提供您可以复制的示例。