dúvida em utilização de exceptions entre camadas

olá pessoal. O sistema no qual trabalho faz validações de regras de negócio na action, e utiliza coisas tipo esperar a exceção do banco para poder enviar uma mensagem para o usuário. Resolvi fazer tratamento das regras de negócio na camada de negócio, mas não sei como faço para enviar a mensagem de erro para o struts para que ele apresente a mensagem ao usuário.
Já trabalhei em um sistema em que era feito da seguinte forma: havia uma exception chamada BusinessException, que era instanciada com a mensagem de erro, aí o struts apenas pegava essa exception e mostrava sua mensagem de erro. Essa é a melhor maneira? ou é melhor ter uma exception para cada erro possível, como por exemplo entidade duplicada, erro de conexão com o banco; ou nenhuma das formas está correta?
obrigado pela atenção!