Глобальная обработка исключений для управления winforms

При работе над проектами ASP.NET 1.1 я всегда использовал Global.asax для отлова всех ошибок. Я ищу аналогичный способ перехвата всех исключений в пользовательском элементе управления Windows Forms, который в конечном итоге становится размещенным элементом управления IE. Как правильно делать что-то подобное?

5.08.2008 20:05:22
Также взгляните на мой вопрос о некоторых подводных камнях (ссылки на пару кодирующих записей в блоге ужасов).
Ray 5.08.2008 22:17:11
5 ОТВЕТОВ
РЕШЕНИЕ

Вам нужно обработать System.Windows.Forms.Application.ThreadExceptionсобытие для Windows Forms. Эта статья действительно помогла мне: http://bytes.com/forum/thread236199.html .

24
4.05.2012 10:11:37

Если вы используете VB.NET, вы можете подключиться к очень удобному ApplicationEvents.vb. Этот файл поставляется бесплатно с проектом VB.NET WinForms и содержит метод для обработки необработанных исключений .

Чтобы получить этот отличный файл, это «Свойства проекта >> Приложение >> События приложения»

Если вы не используете VB.NET, тогда да, он обрабатывает исключение Application.ThreadException .

6
5.08.2008 20:20:12

В настоящее время в моем приложении winforms есть обработчики для Application.ThreadException, как указано выше, но такжеAppDomain.CurrentDomain.UnhandledException

Большинство исключений поступают через ThreadExceptionобработчик, но один из доменов приложений также поймал несколько в моем опыте

11
5.08.2008 20:42:31
Пример кода из MSDN, показывающий, как перехватить оба типа необработанных исключений: msdn
Jan Hettich 14.07.2011 00:43:26

Код из 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 
2
27.09.2013 21:55:24

Обрабатывать исключения глобально ...

Приложение для Windows

Событие System.Windows.Forms.Application.ThreadException

Обычно используется в основном методе. См. Исключение потока MSDN

Asp.Net

Событие System.Web.HttpApplication.Error

Обычно используется в файле Global.asax. См. Глобальные обработчики MSDN Global.asax

Консольное приложение

Событие System.AppDomain.UnhandledException

Обычно используется в основном методе. См. MSDN UnhandledException

3
19.05.2015 11:36:04