默认.NET异常处理程序

时间:2010-04-15 21:50:24

标签: .net exception-handling

所以前几天我的C#应用​​程序崩溃了。通常,对于.NET应用程序,如果您有未处理的异常,则会收到带有堆栈跟踪的错误消息。

然而,这一次,我得到了一个不同的对话框,只是告诉我有一个错误,并提供附加调试器,但对话框中没有堆栈跟踪,并且它运行的机器没有安装调试器。< / p>

是什么给出的?为什么我没有看到默认的.NET异常处理程序?

2 个答案:

答案 0 :(得分:5)

许多事情都可能导致这种情况发生:

  • 在非托管代码中崩溃(即访问冲突,错误的GDI调用,关闭句柄等);
  • 后台线程上未处理的异常;
  • 某些邮件处理程序中的未处理异常(即OnPaint);
  • 致命的例外情况,例如OutOfMemoryExceptionStackOverflowExceptionBadImageFormatException等 - 可能会阻止全局异常处理程序运行;
  • 在应用初始化或关闭期间发生未处理的异常;
  • 硬件故障 - 内存/磁盘扇区不良等
  • ......还有更多。

确实唯一可以确定的方法是确定重现错误的步骤,并使用像WinDbg这样的工具来实际调试崩溃的部分。

答案 1 :(得分:0)

您可能在应用程序直接或间接使用的非托管代码中崩溃。

如果你在非托管代码中访问受保护的内存,那就是它。您不会管理异常并冒泡/传播任何内容。您的流程将以旧式方式崩溃,您将需要老式的工具和技术来查找错误。