Melhor prática para o tratamento de exceptions em camadas

Caros,

Uma duvida está me incomodando a um tempo.

O que seria a melhor prática em métodos da camada de negócio como

Add(), Remove(), Update()

Implementá-lo assim, relançando a exception e/ou mais alguma mensagem adequada

void Remove
{
    try
   {
        this.DAL.Insert(...);       
   }
   catch(Exception ex)
   {
        throw(ex);
   }
}
bool Remove
{
    try
   {
        this.DAL.Insert(...);       
        return true;
   }
   catch(Exception ex)
   {
        return false;
   }
}

Costumo implementá-lo da primeira forma, mas sempre fico na dúvida.

Agradeço comentários.

Basicamente, nenhum dos dois modos que você citou é recomendado.

Leituras recomendadas:




http://dev2dev.bea.com/pub/a/2006/11/effective-exceptions.html?page=1