Вы не указали среду (Windows-сервис может означать управляемый или неуправляемый). Я собираюсь угадать, что вы работаете в собственном коде, возможно, C или C++. Если это так, вам нужно быть уверенным, что вы используете структурированную обработку исключений из окон, а не механизм try/catch C++. В зависимости от вашего поставщика компилятора реализация C++ не может устранить все исключения.
В управляемом коде, в зависимости от версии фрейма, существуют необщимые исключения. Исключая это, вы также можете не поймать исключение, если вы не подготовили ограниченный регион и внимательно следите за правилами CER. Кроме того, как упоминалось выше, вы можете наблюдать необработанные исключения в своем AppDomain. (Возможно, вы не находитесь в одном домене приложения, но это необычно, и вы, вероятно, знаете, не были ли вы).
Еще одна вещь, которую следует помнить в любом случае, состоит в том, что каждый поток имеет свой собственный стек и множество исключений. Если вы пытаетесь попробовать/поймать все исключения, вам нужно поймать каждый поток, который работает от вашего имени. В управляемом коде поток финализатора (поток сборщика мусора, который выполняет «деструкторы» или код финализатора) - это одно место, которое часто пропускается.
Однако, прежде чем я подпрыгнул до любого из них, я искал бы выход из процесса или предложение исключения без исключения.
Является ли этот родной или управляемый код? C# или C++? –