RFD Exception handling Политика разработчиков
От: dak_dak  
Дата: 19.01.06 12:51
Оценка:
Добрый день.

Какова политика разработчиков в плане обработки исключений?
Каковы рекомендации к использованию?

Исходя из кода если определен #define HANDLE_EXCEPTIONS то перехватываются ВСЕ исключения, заворачиваются в производный от RsdnDataException (который в свое очередь от Exception — но не от ApplicationException) и выбрасывается наверх.
Если произошло outofmemory или steckoverflow — дальнейшая работа приложения в общем-то невозможна...

И по поводу дефайна. По МСДН-у область видимости define это файл в котором он написан. Т.е. хитрым щелчком мыши переключатсья между хандлиногом эксепшенов снаскоку невыходит. Есть возможность указать компилятору — но не очень понятно где это указывать в студии для asp.net 2.0

Этот пост не вплане поругаться или пожурить, а плане понять политику

Спасибо.
Re: RFD Exception handling Политика разработчиков
От: IT Россия linq2db.com
Дата: 19.01.06 14:40
Оценка:
Здравствуйте, dak_dak, Вы писали:

_>Какова политика разработчиков в плане обработки исключений?

_>Каковы рекомендации к использованию?

По последней версии политика такая. Перехватываются только исключения, возникающие в результате обращения к методам провайдера данных. Все они передаются в виртуальный метод OnOperationException, где заворачиваются в BLToolkit.Data.DataException и выбрасываются дальше. Это делается только лишь с одной целью — унифицировать обработку исключений от разных провайдеров данных. Все остальные исключения проходят как есть. Т.е. если во время вызова метода ExecuteObject произошло исключение в вызове метода IDbCommand.ExecuteReader, то оно будет завёрнуто в DataException. Если исключение возникло после, во время маппинга данных в объект, то вызывающая программа получит исключение как есть.

Метода OnOperationException виртуальный и имеет следующий вид:

protected virtual void OnOperationException(OperationType op, Exception ex)
{
    throw new DataException(ex);
}

Т.е. перекрыв его можно либо заменить тип исключения на свой, либо вообще оставить его без изменений.
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.