Глобальная обработка исключений для управления winforms
При работе над проектами ASP.NET 1.1 я всегда использовал Global.asax для выявления всех ошибок. Я ищу аналогичный способ перехвата всех исключений в пользовательском элементе управления Windows Forms, который в конечном итоге является размещенным элементом управления IE. Как правильно делать что-то подобное?
Ответов (5)5
Вам необходимо обработать System.Windows.Forms.Application.ThreadException
событие для Windows Forms. Эта статья мне очень помогла: http://bytes.com/forum/thread236199.html .
Если вы используете VB.NET, вы можете использовать очень удобный ApplicationEvents.vb. Этот файл поставляется бесплатно с проектом VB.NET WinForms и содержит метод обработки необработанных исключений .
Чтобы добраться до этого изящного файла, это «Свойства проекта >> Приложение >> События приложения».
Если вы не используете VB.NET, то да, он обрабатывает Application.ThreadException .
Глобальная обработка исключений ...
Приложение Windows
System.Windows.Forms.Application.ThreadException событие
Обычно используется в основном методе. Обратитесь к исключению потока MSDN
Asp.Net
System.Web.HttpApplication.Error событие
Обычно используется в файле Global.asax. Обратитесь к глобальным обработчикам MSDN Global.asax
Консольное приложение
System.AppDomain.UnhandledException событие
Обычно используется в основном методе. Обратитесь к MSDN UnhandledException
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