Исключения внутри репозиториев: как вы с ними справляетесь? - PullRequest
1 голос
/ 21 мая 2009

Легкий вопрос, который меня интересует, чтобы высказать ваши мысли:

С вашими реализациями репозитория, хотите ли вы, чтобы исключения генерировались внутри репозитория и оставляли обработку исключений вызывающей стороне, или вы предпочитаете перехватывать исключения внутри вашего репозитория, сохранять исключение и возвращать false / null? *

Ответы [ 2 ]

4 голосов
/ 21 мая 2009

Зависит.

Позволить ли возникать исключениям? Абсолютно. Но я хочу это для сбоя соединения, сбоев команд. Что бы вы ни делали, не просто скрывайте это, вам нужно знать о них. Я предпочитаю, чтобы мои приложения выходили из строя как можно быстрее, чтобы уменьшить побочные эффекты и дальнейший ущерб.

Я также регистрирую исключения. Я использую Log4net, чтобы помочь с этим. Но мне нравится регистрировать исключения у источника. Я позволю им всплыть оттуда.

Вернуть ноль? Если что-то не может быть найдено (то есть ищет что-то по id, а его там нет), тогда я возвращаю ноль, а не исключение. Но есть случаи, когда я вижу, как возникает новое исключение, когда это происходит.

Основной момент: исключения должны быть «исключительными», а не правилом. Если выдается исключение, это должно быть потому, что что-то действительно не так, и вам нужно это исправить.

0 голосов
/ 21 мая 2009

Я обычно допускаю утечку исключений, хотя, если я нахожусь в особенно корпоративном настроении, я заключу их в RepositoryException, чтобы клиенты не заботились о базовом механизме хранения.

Я бы никогда не возвратил false / null вместо исключения, поскольку за этими значениями уже есть смысл.

В редких случаях у вас мог бы быть мозговой механизм хранения, который генерирует исключения в неисключительных случаях - и я бы поймал эти конкретные и возвратил бы ноль в случае необходимости (например, если строка не существует, но В этом случае механизм хранения выдает ошибку - я поймаю ее и верну ноль).

...