Если это приложение Windows Forms, то вполне вероятно, что необработанное исключение перехватывается насосом оконных сообщений, поэтому вы его никогда не видите. Чтобы справиться с этим, см. мой ответ здесь .
Если это служба Windows, то исключение может появляться в фоновом потоке и не направляться обратно в ваш основной поток. Чтобы справиться с этим, вам нужно переместить любой фоновый поток обратно в ваш основной поток, и исключение будет переброшено туда, чтобы вы могли его перехватить.
Если это консольное приложение, то я немного озадачен.
РЕДАКТИРОВАТЬ : Ваш комментарий говорит, что это приложение Windows Forms. В этом случае вы, вероятно, не видите исключение, поскольку оно обрабатывается встроенным обработчиком исключений Windows Forms, который по умолчанию выполняет следующие действия:
- Поймает необработанное управляемое исключение, когда:
- без отладчика и
- исключение возникает при обработке сообщения окна, а
- jitDebugging = false в App.Config.
- Показывает диалог для пользователя и предотвращает завершение работы приложения.
Вы можете отключить это поведение, установив jitDebugging = true в App.Config. Тогда вы сможете увидеть необработанное исключение, зарегистрировавшись для события Application.ThreadException, например, в C #:
Application.ThreadException += new Threading.ThreadExceptionHandler(CatchExceptions);