工作时ASP.NET 1.1项目,我总是用的全球性的。asax抓住所有的错误。我在寻找一个类似的方式来捕捉所有的例外情况,在一个窗户的形式用户的控制,它结束是一个主办即控制。什么是适当的方式去做这样的事情?

有帮助吗?

解决方案

你需要处理的 System.Windows.Forms.Application.ThreadException 事件适用于Windows的形式。这篇文章真的帮了我 http://bytes.com/forum/thread236199.html.

其他提示

目前在我它的应用程序,我已经处理程序 Application.ThreadException, 如上所述,但是也 AppDomain.CurrentDomain.UnhandledException

大多数例外情况到达通过 ThreadException 处理,但是程序域之一也抓了几个在我的经验

如果你使用VB.NET你可以进入的非常方便ApplicationEvents.vb。这个文件是免费用VB.NET 它项目,并包含一个处理方法 未经处理的例外情况.

得到这个漂亮的文件,它是"的项目属性>>的应用程序>>的应用程序的事件"

如果你不使用VB.NET然后是啊,这是处理 应用程序。ThreadException.

处理异常的全球...

Windows的应用

系统。窗户。形式。应用程序。ThreadException事件

通常使用的主要方法。请参阅 MSDN线异常

Asp.Net

系统。网。HttpApplication.错误的事件

通常用在全球性的。asax文件。请参阅 MSDN全球性的。asax全球处理程序

控制台应用程序

系统。程序域.UnhandledException事件

通常使用的主要方法。请参阅 MSDN UnhandledException

代码从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 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top