2009-11-25 12 views
6

All'inizio ho pensato che sarebbe stata posta una domanda frequente, tuttavia provare (e non riuscendo) a cercare informazioni su questo mi ha fatto torto.Gestione centralizzata delle eccezioni per il plug-in Eclipse

Esiste un meccanismo nella piattaforma Eclipse per la gestione centralizzata delle eccezioni delle eccezioni?

Ad esempio ... Si dispone di un progetto di plug-in che si collega a un DB ed emette query, i cui risultati vengono utilizzati per compilare alcuni ad es. visualizzazioni. Questo è come l'esempio più comune di sempre. :) Le query vengono eseguite quasi per qualsiasi azione dell'utente, da ogni controllo dell'interfaccia utente fornito dal plug-in. Molto probabilmente l'API di DB Query avrà alcune specifiche del DB SomeDBGeneralException dichiarato come gettato da esso. Va bene, puoi gestirli in base a qualsiasi progetto di software. Ma per quanto riguarda le eccezioni non verificate che potrebbero verificarsi, ad es. , quando la comunicazione con DB si interrompe improvvisamente per qualche motivo relativo alla rete? Cosa fare se in tal caso si desidera rilevare tali eccezioni in un punto centrale e, ad esempio, fornire all'utente un messaggio user-friendly (piuttosto che i messaggi api del protocollo di comunicazione di basso livello) e anche alcune possibili azioni che l'utente potrebbe eseguire per affrontare il problema specifico?

Pensando in context piattaforma Eclipse, la questione può essere riformulato come "C'è un punto di estensione come 'org.eclipse.ExceptionHandler' che permette di dichiarare gestori di eccezioni per specifici (un qualche tipo di supporto filtrante) eccezioni che danno un sacco di flessibilità con la reale gestione? "

risposta

5

Si può ignorare il public void eventLoopException(Throwable exception) da WorkbenchAdvisor

Citato dalla sua javadoc:

Questo metodo viene chiamato quando il codice la gestione di un evento di interfaccia utente genera un'eccezione . In un'applicazione perfettamente funzionante, , questo metodo non chiamerebbe mai . In pratica, si tratta in gioco quando ci sono bug nel codice che scatenano runtime incontrollato eccezioni.

+0

Ottimo! Anche se speravo che ci fosse qualcosa di più avanzato API di alto livello. Grazie, gli darò un colpo! – Svilen

3

Sì, Eclipse fornisce un framework come descritto.

Vedere http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/ua_statushandling_defining.htm per i dettagli del punto di estensione.

Un punto di partenza è osservare l'implementazione predefinita: WorkbenchErrorHandler. Dovrai implementare la tua classe che estenda AbstractStatusHandler. Potresti anche voler guardare InternalErrorDialog nel plug-in org.eclipse.ui. Questo mostra la traccia dello stack, che probabilmente non si desidera, ma estende ErrorDialog e fornisce un esempio che è possibile copiare.