Olá, Bruno.
Amigo, sou fã do princípio KISS. Logo, acredito que todo erro deva ser tratado da mesma maneira, com raras exceções.
Eu gosto da seguinte abordagem:
Para erros "não previstos":
Que tal simplesmente não fazer os erros te levarem para a página de erro padrão do sistema (estilo google, yahoo e afins)? Dai você escreve o erro em log, manda email, enfim, qualquer coisa que te ajude a saber que os erros estão havendo.
Para erros "previstos" (relacionados às regras de negócios):
Ai sim usaria "try/catch", adicionando mensagem ao "flash" e exibindo na view.
Obrigado pela resposta.
Com base na sua proposta, vou rever algumas das excessões enviadas ao usuário, ja que muitas não podem ser resolvidas com preenchimento de formulários...
Além do tratamento de erros, você também transfere todo o processamento das actions para services ou faz tudo dentro da própria action mesmo?
Se usa-se Services, só se deve tratar nos Controllers aquilo que impede o uso dos próprios Services. Exemplo: a não chegada de um parâmetro de requisição esperado.
Esta modelagem adotada, a implementação das actions dos controllers em services, trata-se de um simples padrão de modelagem adotada, ou existe algum reflexo no desempenho ou outra característica do software final?
[]'s