默认.NET异常处理程序

ajs*_*410 2 .net exception-handling

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

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

是什么赋予了?为什么我看不到默认的.NET异常处理程序?

Aar*_*ght 5

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

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

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