Getting the last error or IStatus thrown in Eclipse
This isn’t quite the solution, but this is a start. We register an additional logging mechanism to the Eclipse Platform which allows us to catch IStatuses that are thrown. However, since the Platform is running in a different thread, it will be difficult to pass information back to the original thread.
/**
* Before jumping into an Eclipse test, this method should be called
* so we can catch any exceptions that occur during loading, and
* print them out to the log.
*/
protected void addLogListener() {
Platform.addLogListener(new ILogListener() {
@Override
public void logging(IStatus status, String plugin) {
// rethrow if exception is caught
if (status.getSeverity() == IStatus.ERROR) {
// JUnit won't actually catch this, because the Platform is
// in a different thread. however we will still get the
// stack trace in System.err so this remains somewhat useful.
throw new RuntimeException(status.getMessage(), status.getException());
} else {
// otherwise just print out the error
System.err.println(status);
}
}});
}
Used in the IAML project.