В дополнение к событию ExceptionThrown, которое генерируется при возникновении исключения, существуют и другие связанные события - в основном, ExceptionCatcherEnter / ExceptionCatcherLeave, ExceptionSearchFunction * и ExceptionUnwind *. Они выбрасываются, когда происходит соответствующее событие. Если инициируется событие ExceptionCatcher *, исключение перехватывается. Если исключение полностью не обработано, поток или программа будут прерваны. В этих случаях вы можете использовать методы ThreadDestroyed и Shutdown. Вам нужно будет найти способ сохранить текущую информацию во время ExceptionThrown (сопоставление между ThreadId и текущим состоянием / данными исключения, будьте осторожны, чтобы не хранить ничего, что будет признано недействительным), и обрабатывать информацию только в одном из более поздних обратных вызовов.