我正在使用一个写得很糟糕的第三方(C/C++) API。我从托管代码(C++/CLI)中使用它,有时会出现"访问冲突错误"。这会导致整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等该怎么办]。
但是我不希望我的应用程序整体崩溃。至少,如果真的出现问题,我的应用程序应该优雅地说"好的,我不能完成我的工作了,再见:-)",然后执行一些备选方案,最后关闭自己。
但似乎没有办法捕获(可能是错误的术语,正确的词可能是被通知)访问冲突和类似的错误。有没有办法了解这些错误,以便我可以执行备选方案。
PS:标准异常处理无法解决此问题。
但是我不希望我的应用程序整体崩溃。至少,如果真的出现问题,我的应用程序应该优雅地说"好的,我不能完成我的工作了,再见:-)",然后执行一些备选方案,最后关闭自己。
但似乎没有办法捕获(可能是错误的术语,正确的词可能是被通知)访问冲突和类似的错误。有没有办法了解这些错误,以便我可以执行备选方案。
PS:标准异常处理无法解决此问题。
#include "stdafx.h"
#include <iostream>
using namespace System;
using namespace std;
static void ThrowingManagedException()
{
throw gcnew ArgumentException("For no good reason");
}
static void ThrowingNativeException()
{
throw std::exception("For no good reason");
}
static void SomeBadThingsHappen()
{
short a[1];
a[0]=1;
a[2]= 2; // SomeOne make stupid mistake
}
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Test Exceptions");
try
{
SomeBadThingsHappen();
//ThrowingNativeException();
//ThrowingManagedException();
}
catch(Exception^ e)
{
Console::WriteLine("Something awful happened: "+ e);
}
Console::WriteLine("Press enter to exit");
Console::Read();
return 0;
}