Поведение среды выполнения WCF по умолчанию - проглатывать все исключения, кроме нескольких. Поэтому, если ваш код выбрасывает исключение в стек во время выполнения WCF (например, если вы выбрасываете из операции WCF), это НЕ приведет к аварийному завершению приложения (если оно не считается «фатальным» исключением, таким как OOM, SEHException и т. Д.). .). Если исключение не является частью договора об ошибке операции, то канал будет неисправен, в противном случае нет.
Если среда выполнения WCF не соответствует вашему коду в стеке, исключение / вызовет / приведет к сбою процесса.
Это похоже на среду выполнения ASP.NET.
Если вы хотите проверять исключения, вылетающие из операций WCF, я рекомендую использовать интерфейс IOperationInvoker. Вы также можете использовать IErrorHandler, но ваша реализация IErrorHandler будет уведомлена об исключениях, отличных от тех, которые вызываются из «пользовательского кода» (операции WCF), таких как SocketAbortedExceptions во внутренних потоках ввода-вывода WCF, которые, вероятно, вам не интересны.