это зависит от вашей системы здесь, но я бы регистрировал исключения, вероятно, внутри BLL.И заметь "лог" не ловить!То есть - в конце улова будет повторный бросок!
Я вообще ничего не улавливаю в сервисе - это просто общение с клиентом - не нужно вкладывать в него какую-то логику ИМХО.
И, конечно же: поймайте ваши ожидаемые исключения, в которые они были брошены, и просто пропустите необъявленную передачу.
Например: Сценарий 1 - возможно, перехватите SqlExceptions, попробуйте handleих, а если не обернуть их в какое-то DAL-исключение и выбросить их.Сценарий 2 - может быть, поймать DAL-исключения из уровня 3 и посмотреть, сможете ли вы обработать их или обернуть их еще раз, ...
ИМХО, почти никогда не бывает хорошей идеей обрабатывать, регистрировать и отключать все видынеожиданные исключения (catch (Exception)
) - после этого состояние приложения будет очень неопределенным.