【发布时间】:2016-02-25 09:21:25
【问题描述】:
在windows中是否可以忽略主线程中未处理的异常?
我了解操作系统希望在主线程中停止一个未处理异常的进程。但是为什么 System.Threading.Timer 任务的线程产生中未处理的异常会在 Windows 中产生这个“你想打开调试器”对话框吗?
是的,您总是可以将整个任务包装在一个 try/catch-all 块中,但我觉得这很奇怪。
注意:我尝试了一个简单的命令行程序,它在 Timer 对象中有一个引发异常的任务(几秒钟后) - 似乎仍然无法阻止 Windows 终止进程。
【问题讨论】:
-
"要打开调试器吗?" (因为这个程序发生了故障)......认真地处理你的异常,不要试图吞下它们。以后会狠狠地咬你。如果您希望发生某个异常,请编写代码来处理它。这样,当意外发生时,您就不会被蒙在鼓里。
-
我尝试设置一个全局异常处理程序,就像在 JVM (drdobbs.com/jvm/uncaught-java-thread-exceptions/240148320) 中一样,但这在 Windows 上不起作用。我敢打赌,在这个平台上我必须习惯这一点。
标签: c# multithreading exception-handling