none
关于UnhandledException的问题 RRS feed

  • 问题

  • AppDomain中提供处理未处理异常的UnhandledException。利用它,可以处理指定Domain中没有处理而冒泡到当前位置的异常。
    
    MSDN中的示例为(可跳过不看):
    
    Public Shared Sub Main()
    	Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    	currentDomain.UnhandledException += New UnhandledExceptionEventHandler(AddressOf MyHandler)
    
    	Try
    		Throw New Exception("1")
    	Catch e As Exception
    		Console.WriteLine("Catch clause caught : " + e.Message)
    	End Try
    
    	Throw New Exception("2")
    
    	' Output:
    	'  Catch clause caught : 1
    	'  MyHandler caught : 2
    End Sub
    
    Private Shared Sub MyHandler(sender As Object, args As UnhandledExceptionEventArgs)
    	Dim e As Exception = DirectCast(args.ExceptionObject, Exception)
    	Console.WriteLine("MyHandler caught : " + e.Message)
    End Sub
    
    'End Of The Sample
    
    
    
    

    但是,有一点,未处理的异常会先报告异常,如果选择“继续”,才会转到MyHandler中。这样的话,如果用户选择“中断”,那么直接退出,MyHandler就没有意义了。并且委托对象只支持+=和-=运算,不支持=运算,所以不能用

    currentDomain.UnhandledException = New UnhandledExceptionEventHandler(MyHandler)
    


    有没有方法绕过调试器,直接进入MyHandler中?有没有解决方法。
    谢谢先。 

    2011年1月10日 3:20

答案

  • 调试器的作用是让你在调试模式下能够准确定位到异常,否则我们完全可以在Release发布模式下运行,这样就没有调试器的干扰了。

    这个现象只是会在你开发的时候发生,你发布后,因为没有调试器和相应的源码,它是不可能中断让你看到异常的源码,而是直接进入你的 UnhandledException 委托,处理异常。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月11日 11:29
    版主

全部回复

  • 调试器的作用是让你在调试模式下能够准确定位到异常,否则我们完全可以在Release发布模式下运行,这样就没有调试器的干扰了。

    这个现象只是会在你开发的时候发生,你发布后,因为没有调试器和相应的源码,它是不可能中断让你看到异常的源码,而是直接进入你的 UnhandledException 委托,处理异常。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月11日 11:29
    版主
  • 你好,

     

    问题解决了吗?如果还有问题,请随时与我们联系


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月17日 15:37
    版主