2009-06-24 13 views
10

Hi
Esiste un modo per gestire tutti gli errori e le eccezioni in crash un'applicazione WPF? So di DispatcherUnhandledException, ma gestisce solo le eccezioni nel thread dell'interfaccia utente, non è vero? C'è un modo per catturare e registrare tutte le eccezioni in altri thread? e anche errori vincolanti? Come implementate questo tipo di requisiti nel vostro sistema di enterprice?Qual è la procedura migliore per gestire tutte le eccezioni nell'applicazione WPF?

risposta

3

Tenete a mente, che non è consigliabile la cattura tutte le eccezioni, invece si consiglia di prendere uniche eccezioni si sa (o si aspettano che accada in un luogo). Ancora di più se si desidera ottenere il logo "Certificato per Microsoft [Windows | Vista]", non si devono rilevare eccezioni sconosciute e tali eccezioni devono andare a Wer.

+4

Sono d'accordo, tuttavia se catturi tutte le eccezioni fallo solo per loggarlo, così puoi trovare errori comuni e correggerli. Quindi lancia nuovamente l'eccezione. – khebbie

+6

Credo che i consigli di Microsoft che hai menzionato NON siano in grado di catturare tutte le eccezioni, ovvero catturare l'eccezione dal blocco try. Tuttavia, l'OP sta chiedendo una soluzione per gestire le eccezioni non rilevate, in modo che tu possa gestire la situazione informando l'utente del crash e inviando il tuo team di sviluppo/controllo qualità a un'e-mail di rapporto di arresto anomalo. – Dennis

+1

No, i consigli di Microsoft riguardano esattamente la cattura di tutte le eccezioni non gestite.L'idea principale che OS raccoglierà tutte le informazioni e invierà un report alla MS, quindi MS avrà tutte le statistiche sulle app problematiche, e lo sviluppatore potrà quindi prendere questi report dalla MS anche se Winqual. Ma ovviamente facendo qualche registrazione su un'eccezione sconosciuta e poi rilanciare come è permesso anche a khebbie. – arbiter

10
AppDomain.CurrentDomain.UnhandledException 

Cattura eventuali eccezioni non gestite per il thread corrente. Questo è il modo in cui lo gestiamo nella nostra applicazione.

Binding Gli errori vengono sempre gestiti e registrati nella finestra di output. Prima di un rilascio, controlliamo la finestra di output per gli errori di associazione e risolviamo il maggior numero possibile.

Tuttavia, è mia opinione che non si desideri trattare gli errori di associazione come non gestiti in quanto sono in gran parte recuperabili e dovrebbero essere risolti nel miglior modo possibile prima di ogni rilascio. È possibile modificare Debug> Esecuzioni in Visual Studio in modo che invii BindingFailure per ottenere informazioni più specifiche.

HTH,

Dennis

+0

Dove è il posto migliore per definire il gestore di eventi tale che anche i primi errori possono essere rilevati? –

+0

È possibile registrare l'evento nel punto di ingresso dell'applicazione. Vedere http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx per i dettagli come là un paio di cose che dovete capire. – Dennis

4

Sì, ci sono 3 posti:

  1. luogo Application.Run() in try ... catch
  2. DispatcherUnhandledException
  3. AppDomain.CurrentDomain.UnhandledException

In entrambi i casi si dovrebbe visualizzare un please-forgive- messaggio e suggerisco di inviare una segnalazione di errore.

Il servizio sul server deve rispondere "grazie per aver inviato il rapporto errori" o "il problema è già stato risolto nella versione successiva. si prega di aggiornare'

+3

Non pensavo che 'Application.Run()' esistesse nelle app WPF. – Pat

+0

Buon punto per elencare tutti i posti. Ma assicurati che siano tutti corretti. –

Problemi correlati