Ich möchte die globale Ausnahmebehandlung in meiner RCP
App überschreiben. Immer wenn eine nicht abgefangene Ausnahme auftritt, möchte ich sie protokollieren (unter Verwendung der java
Protokollierung) und dann die App beenden. Ich habe bereits die eventLoopException(Throwable exception)
Methode in der ApplicationWorkbenchAdvisor
Klasse überschrieben. Dies fängt jedoch nur die Ausnahmen der Ereignisschleife ab. Ab jetzt habe ich auch die postStartup()
Methode wie folgt überschrieben:Globale Ausnahmebehandlung in einer Eclipse-RCP-App
public void postStartup()
{
Policy.setStatusHandler(new StatusHandler()
{
@Override
public void show(IStatus status, String title)
{
LOGGER.log(Level.SEVERE, "Uncaught Exception", status.getException());
UnexpectedErrorDialog();
PlatformUI.getWorkbench().close();
}
});
}
Es protokolliert die Ausnahme in meiner Protokolldatei und beendet die App. Aber es ist offensichtlich nicht richtig und die Ausnahme wird zweimal in der Konsole angezeigt, denn alles, was ich mache, ist das Abfangen der Ausnahme in einem gui dialog
für den Benutzer abfangen. Wie kann ich also die globale Ausnahmebehandlung richtig überschreiben/ändern, so dass mein Code (Protokoll) anstelle des Standardcodes verwendet wird?