繁体   English   中英

在C#中,抛出异常时能否执行代码?

[英]in C# can I have code execute when an exception is thrown?

我遇到了一个非常难以跟踪的错误。 这是仅在调试器未连接时才会发生的一种:)

我已经选好了MiniDumpWriteDump(),这对于创建.dmp文件非常有效,事后我可以对其进行调试。

但是,我正在做类似的事情

try
{
    foo();
}
catch(Exception)
{
    CreateMiniDump()
}

这很好,但是我没有得到所需的调用栈。 我真的更喜欢在引发异常的地方使用调用堆栈(包含所有成员变量)。

这可能吗? 有没有一种机制可以使异常发生? 这样我就可以创建一个小型转储并保留调用栈,等等?

您可以订阅AppDomain.CurrentDomain.UnhandledException以获取在异常即将解散时引发的事件。 引发时,原始上下文仍在堆栈中。 您可以将小型转储创建代码放入事件处理程序中。

在.NET 4及更高版本中,您可以订阅FirstChanceException事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM