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

голоса
33

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

Задан 05/08/2008 в 21:05
источник пользователем
На других языках...                            


5 ответов

голоса
24

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

Ответил 05/08/2008 d 21:11
источник пользователем

голоса
11

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

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

Ответил 05/08/2008 d 21:42
источник пользователем

голоса
6

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

Чтобы добраться до этого изящного файла, это «Свойства проекта >> Применение >> События приложений»

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

Ответил 05/08/2008 d 21:16
источник пользователем

голоса
3

Для обработки исключений Глобально ...

Приложение Windows

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

Как правило , используется в основном методе. См MSDN Exception темы

Asp.Net

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

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

Применение консоли

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

Как правило , используются в главном методе. См MSDN UnhandledException

Ответил 19/05/2015 d 11:36
источник пользователем

голоса
2

Код из 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 
Ответил 27/09/2013 d 22:55
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more