我正在使用本地dll,某个地方会抛出c0000005异常(访问冲突)并最终崩溃我的Web服务,直到该服务被回收。有没有办法捕捉异常?
答案 0 :(得分:3)
您可以使用Microsoft SEH exception handler捕获异常,但实际上您应该解决任何错误。
干杯&第h。,
答案 1 :(得分:3)
我同意其他人...修复问题,但有时你会继承代码,而你只是想在生产中发现意外的违规行为。
在.net 4+中,您可以添加HandleProcessCorruptedStateExceptions属性,它将作为您可以捕获的异常出现。调用堆栈并不是非常有用,但它总比没有好。
C#
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
public void SomeCSharpMethod()
try
{
// call managed code
}
catch (Exception ex)
{
Console.WriteLine("Exception");
}
C ++
vector<int> myValues;
int a = myValues[1];
答案 2 :(得分:2)
不要抓住这个。修复错误。
0xc0000005
是STATUS_ACCESS_VIOLATION
的NT错误代码。这意味着你的程序引用了一个糟糕的指针。非常简单地说这意味着你的程序剧烈崩溃并且试图恢复是错误的。
我知道你说它是第三方DLL,但至少你应该调试并理解这个问题。它可能是一些简单的事情,就像你传递DLL一些错误输入或没有正确初始化它。如果你不能这样做,你可以联系DLL的作者或考虑消除你对它们的依赖。