在处理ASP.NET 1.1项目时,我总是使用Global.asax来捕获所有错误。 我正在寻找一种类似的方法来捕获Windows窗体用户控件中的所有异常,最终成为托管的IE控件。 做这样的事情的正确方法是什么?

===============>>#1 票数:24 已采纳

您需要为Windows窗体处理System.Windows.Forms.Application.ThreadException事件。 这篇文章对我有帮助: http//bytes.com/forum/thread236199.html

===============>>#2 票数:11

目前在我的winforms应用程序中,我有Application.ThreadException处理Application.ThreadException ,如上所述,还有AppDomain.CurrentDomain.UnhandledException

大多数异常都是通过ThreadException处理程序到达的,但AppDomain也有一些我的经验

===============>>#3 票数:6

如果您使用的是VB.NET,则可以使用非常方便的ApplicationEvents.vb。 这个文件是免费提供的VB.NET WinForms项目,包含一个处理未处理异常的方法。

要获得这个漂亮的文件,它是“项目属性>>应用程序>>应用程序事件”

如果您没有使用VB.NET,那么它正在处理Application.ThreadException

===============>>#4 票数:3

在全球范围内处理例外情况......

Windows应用程序

System.Windows.Forms.Application.ThreadException事件

一般用于主法。 请参阅MSDN线程异常

Asp.Net

System.Web.HttpApplication.Error事件

通常用于Global.asax文件。 请参阅MSDN Global.asax全局处理程序

控制台应用

System.AppDomain.UnhandledException事件

一般用于主要方法。 请参阅MSDN UnhandledException

===============>>#5 票数:2

来自MSDN的代码: http//msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx? cs-save-lang = 1& ct- 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 

  ask by Alex translate from so

未解决问题?本站智能推荐: