Thanks to sambi reddy tip, I have now rewritten AbstractStatusHandler in the ApplicationWorkbenchAdvisor class
@Override public synchronized AbstractStatusHandler getWorkbenchErrorHandler() { if (myStatusHandler == null) { myStatusHandler = new MyStatusHandler(); } return myStatusHandler; }
MyStatusHandler extends AbstractStatusHandler, and I rewrote the handle method as follows:
@Override public void handle(StatusAdapter statusAdapter, int style) { if(statusAdapter.getStatus().matches(IStatus.ERROR) && ((style != StatusManager.NONE))) { LOGGER.log(Level.SEVERE, "Uncaught Exception", statusAdapter.getStatus().getException()); UnexpectedErrorDialog(); PlatformUI.getWorkbench().close(); } }
seems to work correctly, only drawback is that I still get 2 console outputs.
source share