Pergunta

Quando se trabalha em ASP.NET 1.1 projetos de eu sempre usei o Global.asax para detectar todos os erros.Eu estou olhando para uma forma semelhante à captura todas as exceções em um Windows Forms controle de usuário, o que acaba sendo uma hospedado IE controle.Qual é a forma correta de fazer algo como isso?

Foi útil?

Solução

Você precisa lidar com o System.Windows.Forms.Application.ThreadException eventos para Formulários do Windows.Este artigo ajudou-me: http://bytes.com/forum/thread236199.html.

Outras dicas

Atualmente no meu winforms, recomendo manipuladores para Application.ThreadException, como acima, mas também AppDomain.CurrentDomain.UnhandledException

A maioria das exceções chegam através do ThreadException manipulador, mas o AppDomain tem também peguei algumas na minha experiência

Se você estiver usando VB.NET, você pode aproveitar muito conveniente ApplicationEvents.vb.Este ficheiro é fornecido gratuitamente com um VB.NET WinForms projeto e contém um método para tratamento de exceções sem tratamento.

Para chegar a esta bacana arquivo, ele é "Propriedades do Projeto >> Aplicativo >> Eventos de Aplicativo"

Se você não estiver usando VB.NET e, em seguida, sim, é tratamento de Aplicação.ThreadException.

Para Lidar Com Exceções No Mundo Inteiro...

Aplicação Do Windows

Do sistema.O Windows.Formulários.Aplicação.ThreadException evento

Geralmente Utilizado no Método Main.Consulte MSDN Thread Exceção

Asp.Net

Do sistema.Da Web.HttpApplication.Evento de erro

Normalmente Utilizado no Global.asax arquivo.Consulte MSDN Global.asax Global Manipuladores

Aplicativo De Console

Do sistema.Domínio de aplicação.UnhandledException evento

Geralmente utilizado no Método Main.Consulte MSDN UnhandledException

Código da 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 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top