Ответ зависит от вашей платформы.В веб-приложении вы можете связать событие Application_Error
в Global Asax.В WCF вы можете внедрить обработчик ошибок типа System.ServiceModel.Dispatcher.IErrorHandler
в стек WCF, в приложениях форм вы можете связать событие ThreadException
.
Использование его может быть хорошей идеей в некоторых ситуациях, поскольку вы не разрешаете показывать подробности исключений пользователю, но также указывает на некоторую неряшливость в отношении обработки исключений.Я использовал обработчики ошибок WCF для преобразования исключений домена в код состояния http, который прост.Является ли это хорошей практикой или нет, я не знаю.Для приложений asp.net также стоит посмотреть elmah
, доступный через NuGet
.
Также можно написать простой обработчик исключений, который позволит вам повторить попытку /поймать блоки, отправив подпрограммы как Func
или Action
как этот
var eh = new ExceptionHandler();
eh.Process ( () => throw new SillyException());
с классом ExceptionHandler
class ExceptionHandler
{
public T Process(Func<T> func())
{
try { return func(); }
catch(Exception ex) { // Do stuff }
}
public void Process(Action a)
{
try { action() }
catch(Exception ex) { // Do stuff }
}
}