Один из подходов состоит в том, чтобы использовать SEH и выполнить очистку в фильтре исключений перед продолжением распространения исключения. Но я не уверен, что это чрезмерно законно, так как вы будете выполнять большую работу в фильтре. Вы также ничего не знали бы о распространении управляемого исключения.
Альтернативой является завершение управляемого делегата вашей собственной управляемой функцией, которая перехватывает исключение и, в свою очередь, выдает неуправляемое исключение ... которое вы затем можете перехватить в неуправляемом коде.
Когда неуправляемый код завершил свою очистку, используйте другую вспомогательную управляемую функцию, чтобы повторно выдать исходное управляемое исключение