高人勿入
MSDN上面说,framework2.0以后,如果子线程中发生了未处理异常,通常情况下应用程序会崩溃,但有三种例外情况,它们是:
前两种情况还好理解,最后一种情况是怎么回事,哪位园友可以举例说明,谢谢。interal exception是什么意思,是不是指CLR本身或操作系统产生的进程出现的异常,而不是托管代码执行时出现的异常?
The common language runtime or a host process terminates the thread by throwing an internal exception.
你把它翻译成中文再读读。
这句话确实没错,翻译成中文就懂了
@代码小兵的成长: 什么样的异常算是“interal exception”呀,谢谢。
@代码小兵的成长: MSDN上的翻译是"公共语言运行时或宿主进程通过引发内部异常来终止线程",我不太确定什么样的异常才算是“内部异常”。
@代码小兵的成长: 我这个理解方式对吗:“CLR本身或操作系统产生的进程出现的异常,而不是托管代码执行时出现的异常”
@会长: 额,哥啊,你自己写代码会不会出现异常啊,微软内部的方法也是方法啊,就不能出异常啊,比如内存泄露等,所以你不用纠结别人的异常时什么异常,总之,就是内部出错了,自然就异常了,就比如你的电脑系统出问题了,你重启不就得了,你如果非要理解什么原因,那就得自己多学习了。而且你说:“CLR本身或操作系统产生的进程出现的异常,而不是托管代码执行时出现的异常”,这句话看着意思是这样的,但是深究的话,你先得搞懂微软的代码是不是也是以托管代码的方法运行的,如果是的话,那你“而不是托管代码执行时出现的异常”这句话就是错误的
@代码小兵的成长: 应该差不多,我就是怕万一理解错误就不好了,所以来这里确实确认,刚开始我以为“ internal exception”可能是特指某种异常,比如“inner exception”那样,指的是如果A异常引发B异常,A异常就是B异常的inner exception。
噢噢噢噢,A的异常引发了B的异常,不会吧,反正我不知道,反正估计不会
@代码小兵的成长: 谢谢了
@会长: 创建一个 Winform 程序,在主线程中再创建一个子线程,子线程中就干一件事情,抛出一个异常,编译成 Release,然后运行,你会看到系统会提示你是继续还是结束进程,如果继续的话,你会发现程序还是可以接着用。这就是对第三种情况的模拟。
@Launcher: 谢谢。我去试试