*功能
---和org.eclipse.core.runtime.SafeRunner配合,实现异常的自定义处理
今早看console源码时,看到这个类的一个典型应用,把源码摘下来.
ISafeRunnable示例/** * Notifies listeners of property changes, handling any exceptions */ class PropertyNotifier implements ISafeRunnable { //AbstractConsole.PropertyNotifier private IPropertyChangeListener fListener; private PropertyChangeEvent fEvent; /** * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable) */ public void handleException(Throwable exception) { IStatus status = new Status(IStatus.ERROR, ConsolePlugin.getUniqueIdentifier(), IConsoleConstants.INTERNAL_ERROR, ConsoleMessages.AbstractConsole_0, exception); ConsolePlugin.log(status); //调用框架日志 } /** * @see org.eclipse.core.runtime.ISafeRunnable#run() */ public void run() throws Exception { fListener.propertyChange(fEvent); } /** * Notifies listeners of the property change * * @param event the event that describes the property that has changed */ public void notify(PropertyChangeEvent event) { if (fListeners == null) { return; } fEvent = event; Object[] copiedListeners= fListeners.getListeners(); for (int i= 0; i < copiedListeners.length; i++) { fListener = (IPropertyChangeListener)copiedListeners[i]; SafeRunner.run(this); //SafeRunner类捕获处理,handleException()定义处理异常方式 } fListener = null; } }