2009-11-25 4 views
6

Zuerst dachte ich, das wäre eine Frage, die oft gestellt wurde, aber das Versuchen (und Scheitern), nach Informationen zu suchen, hat mich falsch beurteilt.Zentrale Ausnahmebehandlung für Eclipse-Plugin

Gibt es in der Eclipse-Plattform einen Mechanismus für die zentrale Ausnahmebehandlung von Ausnahmen?

Zum Beispiel ... Sie haben ein Plug-in-Projekt, das eine Verbindung zu einer DB herstellt und Abfragen absetzt, deren Ergebnisse zum Auffüllen von z. Ansichten. Dies ist wie das üblichste Beispiel überhaupt. :) Abfragen werden fast für jede Benutzeraktion ausgeführt, von jedem UI-Steuerelement, das das Plug-in bereitstellt. Höchstwahrscheinlich wird die DB-Abfrage-API einige Besonderheiten für die DB SomeDBGeneralException haben, die von ihr ausgelöst wurde. Das ist in Ordnung, Sie können mit denen umgehen, die Ihrem Softwaredesign entsprechen. Aber wie wäre es mit ungeprüften Ausnahmen, die wahrscheinlich auftreten, z. , wenn die Kommunikation mit der DB aus irgendeinem Grund unterbrochen wird? Was wäre, wenn man in einem solchen Fall diese Ausnahmen an einer zentralen Stelle abfangen möchte und zum Beispiel eine benutzerfreundliche Nachricht an den Benutzer senden möchte (und nicht die Kommunikationsprotokolle der unteren Ebene des Protokolls) und sogar einige mögliche Aktionen, die der Benutzer ausführen könnte mit dem spezifischen Problem umgehen?

Denken in Eclipse-Plattform-Kontext, kann die Frage wie "Gibt es einen Erweiterungspunkt wie" org.eclipse.ExceptionHandler "was erlaubt, Ausnahme-Handler für bestimmte (irgendeine Art von Filterung Unterstützung) Exceptions, die eine Menge geben zu deklarieren Flexibilität mit der tatsächlichen Handhabung? "

Antwort

5

Sie können die public void eventLoopException(Throwable exception) von WorkbenchAdvisor außer Kraft setzen

von seinem javadoc Zitat:

Diese Methode wird aufgerufen, wenn der Code ein UI-Ereignis eine Ausnahme auslöst Handhabung. In einer einwandfrei funktionierenden Anwendung würde diese Methode niemals aufgerufen werden. In der Praxis es kommt in Spiel, wenn es Fehler im Code , die ungeprüft Laufzeit Ausnahmen auslösen.

+0

Großartig! Obwohl ich gehofft hatte, dass es etwas mehr Out-of-the-Box-API auf hohem Niveau gibt. Danke, ich werde es versuchen! – Svilen

3

Ja, Eclipse bietet einen Rahmen, wie Sie beschreiben.

Einzelheiten zum Erweiterungspunkt finden Sie unter http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/ua_statushandling_defining.htm.

Ein Ausgangspunkt ist die Standardimplementierung: WorkbenchErrorHandler. Sie müssen Ihre eigene Klasse implementieren, die AbstractStatusHandler erweitert. Vielleicht möchten Sie auch InternalErrorDialog im Plug-in org.eclipse.ui sehen. Dies zeigt die Stack-Ablaufverfolgung an, die Sie wahrscheinlich nicht möchten, aber es erweitert ErrorDialog und bietet ein Beispiel, das Sie kopieren können.