Вам не нужно использовать флаги, чтобы сказать, что были обработаны исключения - это пахнет плохим дизайном.
Исключения делятся на две категории:
- ожидается (например, проверка не удалась, данные не могут быть введены в базу данных)
- неожиданный
ваших ожидаемых должны быть обработаны довольно быстро, и регистрируется в зависимости от типа исключения. Например, если пользователь ввел некоторые данные, которые были отклонены кодом проверки на бизнес-уровне, я бы поймал исключение и уведомил пользователя, но не зарегистрировал его, потому что ожидалось, и я могу справиться с ним. Другие могут быть «ожидаемыми», но вы не можете справиться с этим - как вызов WCF не удалось из-за тайм-аута или большого пакета данных. Это вы должны обязательно регистрировать - вы даже сможете оправиться от него, поэтому еще раз его нужно поймать и решить. Обратите внимание на отсутствие флагов - исключение либо рассматривается, либо оно продолжает расти. Если вам нужно предпринять какое-либо действие, вы можете сделать это, а затем перестроить исключение, чтобы оно еще больше увеличилось - посмотреть, все еще нет флагов :)
Другой подход, который я использовал в прошлом при метании (обычае) ожидаемые исключения в приложении ASP.NET означают, что это можно обрабатывать локально или нет. Это означает, что когда aspx поймал ошибку (общий обработчик ошибок на базовой странице, наследуемый всеми apsx), тогда он знал, должен ли он просто показывать его локально внутри страницы (после выполнения текстового поиска в файле ресурсов) или должен ли он перенаправляться на страницу с ошибкой. Этот подход был особенно полезен, когда вы делаете смесь стандартных обратных передач и обратных вызовов ajax (возможно, это не особенно полезно для приложений WPF).
Для серьезных неожиданных ошибок вы можете поймать их на уровне приложения here is a previous SO post about it. Еще две связанные должности, которые могут быть полезны here и here.
Еще одна вещь, которую я должен упомянуть, - убедиться, что ваш журнал ошибок является относительно пуленепробиваемым - нет ничего хуже, чем ваш процесс регистрации исключений, бросающий исключение и теряющий все ценные детали этой сложной ошибки, которую вы пытаетесь отследить это раздражает пользователя.
Возможно, ответы на [«Где вы любите ловить исключения и почему?» вопрос] (http://stackoverflow.com/questions/434839/where-do-you-like-to-catch-exceptions-and-why/434903#434903) также полезны здесь? – peSHIr