Я использую плохо написанный сторонний (C / C ++) Api.Я использовал его из управляемого кода (C ++ / CLI).Получите иногда "ошибки нарушения доступа".И это сбой всего приложения.Я знаю, что не могу справиться с этими ошибками [что я могу сделать, если указатель обращается к неправильной ячейке памяти и т. Д.].
Но я не хочу, чтобы мое приложение зависало в целом.По крайней мере, если есть реальная проблема, мое приложение должно изящно сказать: «ОК. Я не могу выполнять свою работу. ПОЗВОНОК.» :-), тогда оно, по крайней мере, выполнит какую-то альтернативную сцену и, наконец, закроет себя.Кажется, нет никакого способа, чтобы поймать (может быть неправильный термин, может быть, слово должно быть информировано) нарушение доступа и аналогичные ошибки. Есть способ получить информацию об этих ошибках.Так что я могу выполнить свой альтернативный сценарий.
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;
}