Глобальная обработка исключений для управления winforms
-
08-06-2019 - |
Вопрос
При работе над проектами ASP.NET 1.1 я всегда использовал Global.asax для отслеживания всех ошибок.Я ищу аналогичный способ перехвата всех исключений в пользовательском элементе управления Windows Forms, который в конечном итоге становится размещенным элементом управления IE.Каков правильный способ сделать что-то подобное?
Решение
Вам нужно справиться с System.Windows.Forms.Application.ThreadException
событие для Windows Forms.Эта статья действительно помогла мне: http://bytes.com/forum/thread236199.html.
Другие советы
В настоящее время в моем приложении winforms у меня есть обработчики для Application.ThreadException
, как указано выше, но также AppDomain.CurrentDomain.UnhandledException
Большинство исключений поступают через ThreadException
обработчик, но AppDomain one также поймал несколько на моем опыте
Если вы используете VB.NET, вы можете подключиться к очень удобному приложению Events.vb.Этот файл поставляется бесплатно вместе с проектом VB.NET WinForms и содержит метод для обработки необработанные исключения.
Чтобы перейти к этому замечательному файлу, перейдите в раздел "Свойства проекта>> Приложение>> События приложения".
Если вы не используете VB.NET, тогда да, это обработка Приложение.Исключение ThreadException.
Обрабатывать Исключения глобально...
Приложение для Windows
Система.Windows.Формы.Приложение.Событие ThreadException
Обычно используется в Основном Методе.Ссылаться Исключение потока MSDN
Asp.Net
System.Web.HttpApplication.Событие ошибки
Обычно используется в глобальном файле.asax.Ссылаться Глобальные обработчики MSDN.asax
Консольное приложение
Система.Домен приложения.Событие необработанного исключения
Обычно используется в Основном Методе.Ссылаться Необработанное исключение MSDN
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