Globale di Gestione delle Eccezioni per winforms controllo
-
08-06-2019 - |
Domanda
Quando si lavora su ASP.NET 1.1 progetti che ho sempre utilizzato Globale.asax per la cattura di tutti gli errori.Sto cercando un modo simile a quello di catturare tutte le eccezioni in un controllo utente di Windows Form, che finisce per essere una ospitato IE controllo.Qual è il modo corretto di fare qualcosa di simile a questo?
Soluzione
È necessario gestire il System.Windows.Forms.Application.ThreadException
evento per Windows Forms.Questo articolo mi ha davvero aiutato: http://bytes.com/forum/thread236199.html.
Altri suggerimenti
Attualmente nel mio winforms app ho gestori per Application.ThreadException
, come sopra, ma anche AppDomain.CurrentDomain.UnhandledException
La maggior parte delle eccezioni arrivano tramite la ThreadException
il gestore, ma il dominio di applicazione ha anche preso pochi nella mia esperienza
Se si sta utilizzando VB.NET è possibile toccare in molto conveniente ApplicationEvents.vb.Questo file viene fornito gratuitamente con un VB.NET WinForms progetto e contiene un metodo per la gestione di le eccezioni non gestite.
Per arrivare a questo nifty file, è "Proprietà del Progetto >> Applicazione >> Eventi dell'Applicazione"
Se non si utilizza VB.NET quindi sì, è la manipolazione Applicazione.ThreadException.
Per Gestire Le Eccezioni In Tutto Il Mondo...
Applicazione Di Windows
Sistema.Windows.Le forme.Applicazione.ThreadException evento
Generalmente Utilizzato nel Metodo Main.Riferimento MSDN Thread Eccezione
Asp.Net
Sistema.Web.HttpApplication.Evento di errore
Normalmente Utilizzato in Globale.asax file.Riferimento MSDN Globale.asax Globale Gestori
Applicazione Console
Sistema.Dominio di applicazione.UnhandledException evento
Generalmente utilizzato nel Metodo Main.Riferimento MSDN UnhandledException
Codice da MSDN: http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
AddHandler currentDomain.UnhandledException, AddressOf MyHandler
Try
Throw New Exception("1")
Catch e As Exception
Console.WriteLine("Catch clause caught : " + e.Message)
Console.WriteLine()
End Try
Throw New Exception("2")
End Sub
Sub MyHandler(sender As Object, args As UnhandledExceptionEventArgs)
Dim e As Exception = DirectCast(args.ExceptionObject, Exception)
Console.WriteLine("MyHandler caught : " + e.Message)
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating)
End Sub