В BCB5 работает перехват EAccessViolation, например ::100100
#define AV_TRY { try {
#define AV_CATCH } catch(EAccessViolation &av) {Application->MessageBox((("Access Violation caught: " + string(__FILE__) + "; " + string(__FUNC__) + "; " + IntToString(__LINE__) + "\n\n") + av.Message.c_str()).c_str(), ("Program Error in " + string(class_name.c_str())).c_str(), MB_OK);} }
Обратите внимание, что имя_класса является специфическим для этого проекта и, вероятно, должно быть заменено на AnsiString (this-> ClassName) или пропущено. Также я переключил этот код с тихого входа в базу данных, чтобы показать MessageBox. Я просто обертываю код, где я наблюдал AVs в AV_TRY ... AV_CATCH.