В кодпроекте есть очень интересная статья об обработке исключений в 3-уровневой архитектуре:
http://www.codeproject.com/KB/exception/expceptionhandling-3-tier.aspx
Обычно каждый уровень должен отвечать за отлов своих исключений, регистрировать ошибку / исключение и предоставлять только необходимую информацию для следующего уровня. Например: пользовательский интерфейс должен иметь только удобное для пользователя сообщение без технической информации.
Та же идея может быть адаптирована к модели, которую вы реализовали. Любая ошибка в DAL должна обрабатываться и распространяться на бизнес-уровень. В вашем случае уровень бизнес-сервисов должен выдать исключение ошибки по сети с настраиваемым удобным для пользователя сообщением, которое будет перехвачено в пользовательском интерфейсе и, вероятно, будет отображаться в виде сообщения.
Надеюсь, это поможет.