*功能 ---和org.eclipse.core.runtime.SafeRunner配合,实现异常的自定义处理 今早看console源码时,看到这个类的一个典型应用,把源码摘下来. ISafeRun...
*功能
---和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;
}
}