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
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.
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
Dove è il posto migliore per definire il gestore di eventi tale che anche i primi errori possono essere rilevati? –
È 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
Sì, ci sono 3 posti:
- luogo
Application.Run()
intry
...catch
DispatcherUnhandledException
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'
Non pensavo che 'Application.Run()' esistesse nelle app WPF. – Pat
Buon punto per elencare tutti i posti. Ma assicurati che siano tutti corretti. –
Ecco una bella soluzione di registrazione con NLog:
Logging in .NET with NLog (default config file, catch all exceptions and route to logger, ...)
- 1. Nei servizi Web XML, qual è la procedura migliore per trasferire nuovamente le eccezioni al client?
- 2. Qual è la procedura migliore per la gestione delle eccezioni quando si utilizza l'associazione dei comandi in WPF?
- 3. Qual è la procedura migliore per gestire gli eventi di ridimensionamento in un elemento polimerico?
- 4. Come gestire le eccezioni?
- 5. Qual è l'approccio migliore per gestire le eccezioni nel servizio WCF?
- 6. Qual è la procedura migliore per condividere le lezioni tra un'app Wear e un'app Android?
- 7. Qual è la migliore libreria per gestire un Wiimote?
- 8. modo migliore per gestire le eccezioni Java in ServletContextListener
- 9. Qual è la procedura migliore per salvare le password utilizzando la funzione Impostazioni C#?
- 10. Qual è la procedura migliore per limitare le pagine specifiche agli utenti registrati solo in Codeigniter?
- 11. Qual è la procedura migliore per le connessioni MongoDB su Node.js?
- 12. Qual è la procedura migliore per denominare le proprietà che sono oggetti?
- 13. Qual è la procedura migliore per archiviare le stringhe di messaggistica UI in Python/Django?
- 14. Qual è il modo migliore per eseguire una procedura guidata utilizzando i controlli WPF nativi
- 15. Come gestire le eccezioni per Route multipla
- 16. Qual è la procedura migliore per elencare e impostare la gestione in Redis?
- 17. Qual è la migliore pratica per la gestione delle eccezioni in silverlight?
- 18. In MVC qual è il metodo migliore per gestire eccezioni o errori nel business?
- 19. Method Fode AsyncDecorator per gestire le eccezioni
- 20. Qual è la procedura migliore per ripristinare da un errore FileSystemWatcher?
- 21. Qual è la procedura migliore per il trasferimento di file binari enormi con ASP.NET?
- 22. Qual è la procedura migliore per non sovrascrivere altre funzioni associate a window.onformare?
- 23. AirBrake vs Exceptional vs errbit: qual è il migliore per tracciare le eccezioni nell'app rails?
- 24. qual è la procedura migliore per il pooling delle connessioni JDBC di Hive
- 25. Qual è la procedura migliore per includere file jar di terze parti in un programma Java?
- 26. Acquisizione di tutte le eccezioni in Python
- 27. Qual è la migliore pratica per scoprire tutte le superclassi di una classe Perl?
- 28. Qual è il modo migliore per rilevare l'eccezione nell'attività?
- 29. Qual è il modo migliore per gestire più azioni?
- 30. Qual è la procedura migliore per la distribuzione di un'applicazione come statica o dinamica?
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
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
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