what to show to the user. Should this also be hidden from the user?
Você mostra ao usuário o que é acionável para eles.
Por exemplo, se você tem um erro que é causado por causa de alguma exceção de ponteiro nulo e mais de um erro do que erro do usuário, você não quer uma explicação completa, porque eles não podem fazer nada diferente.
Or should we show this anyway? Or should we show a generic message?
Mostrando a exceção, pois o conteúdo da mensagem de erro principal é inútil para a maioria dos usuários . Talvez, se a sua base de usuários de destino for desenvolvedores, você possa mostrar as informações como erros completos o tempo todo (talvez você tenha um aplicativo interno para testes automatizados). Mas geralmente os usuários não podem fazer nada diferente mesmo com esse conhecimento.
should we show one of a number of messages based on what the underlying exception is?
A melhor estratégia é fazer o seguinte:
- Interprete o erro em texto que seja significativo para o usuário.
- Parte disso é "o que o usuário pode fazer de diferente"?
- Se eles não puderem fazer nada diferente, diga algo como "ocorreu um erro inesperado".
- Adicione uma descrição de erro detalhada "opcional"
- Permitir que os usuários enviem o relatório de erros (ou faça isso automaticamente, dependendo da base de usuários)
Exemplo
- Mostrao"aqui está o que aconteceu" (erro inesperado)
- Informa ao usuário o que fazer (reabrir o Mail, até inclui um atalho para fazer isso)
- Também tem um "ver detalhes" se alguém tiver interesse em ver o erro técnico completo
- Fornece notificação de que um relatório de erro é arquivado (veja abaixo)
Observe que, em alguns casos, você pode querer tornar o relatório de erros manual ou automático.