При работе над проектами ASP.NET 1.1 я всегда использовал Global.asax для обнаружения всех ошибок. Я ищу аналогичный способ уловить все исключения в пользовательском элементе Windows Forms, который в конечном итоге является размещенным элементом управления IE. Каков правильный способ сделать что-то подобное?Глобальная обработка исключений для управления winforms
ответ
Вам необходимо обработать событие System.Windows.Forms.Application.ThreadException
для Windows Forms. Эта статья действительно помогла мне: http://bytes.com/forum/thread236199.html.
Если вы используете VB.NET, вы можете использовать очень удобный ApplicationEvents.vb. Этот файл поставляется бесплатно с проектом VB.NET WinForms и содержит метод обработки unhandled exceptions.
Чтобы добраться до этого изящного файла, это «Свойства проекта >> Применение >> События Применение»
Если вы не используете VB.NET, то да, это обработка Application.ThreadException.
В настоящее время в моем WinForms приложение, которое я обработчики Application.ThreadException
, как указано выше, но и AppDomain.CurrentDomain.UnhandledException
Большинство исключений прибывают через ThreadException
обработчик, но AppDomain один также пойманы несколько в моем опыте
Пример кода из MSDN, показывающий, как поймать оба типа необработанных исключений: [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) – 2011-07-14 00:43:26
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
для обработки исключений Глобально ...
приложений Windows
System.Windows.Forms.Application.ThreadException событие
Обычно используется в методе Main. См MSDN Thread Exception
Asp.Net
System.Web.HttpApplication.Error событие
Обычно используется в Global.asax файле. См MSDN Global.asax Global Handlers
Console Application
System.AppDomain.UnhandledException событие
Обычно используется в методе Main. См. MSDN UnhandledException
Также ознакомьтесь с [моим вопросом] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11) для некоторых подводных камней (ссылки на пару кодовых записей блога ужасов). – Ray 2008-08-05 22:17:11