Сведения о вопросе

Fhohir

16:03, 1st July, 2020

Теги

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

Просмотров: 522   Ответов: 5

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



  Сведения об ответе

pumpa

18:03, 1st July, 2020

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


  Сведения об ответе

lesha

18:03, 1st July, 2020

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

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


  Сведения об ответе

piter

18:03, 1st July, 2020

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

Чтобы добраться до этого замечательного файла, это "Project Properties >> Application >> Application Events"

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


  Сведения об ответе

ITSME

18:03, 1st July, 2020

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

Приложение Windows

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

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


  Сведения об ответе

KOMP

18:03, 1st July, 2020

Код от MSDN: http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx?cs-save-lang=1&cs-Ланг=глаг#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 


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться