Java: que informações no rastreamento de pilha de erro geralmente não desejamos mostrar aos usuários?

Sou novo em java e não estou familiarizado com as regras de formatação usadas por um rastreamento de pilha de erros quando ele é lançado e, subsequentemente, exibido para um usuário final do meu aplicativo da web.

Minha experiência com o banco de dados Oracle é que a pilha de erros contém informações internas, como nomes de esquema e procedimento e número (s) de linha, que, embora útil para depuração, eu gostaria de evitar que o usuário visse. Aqui está um exemplo:

java.sql.SQLException : ORA-20011: Error description here
ORA-07894: at "NAME_OF_SCHEMA.PROCEDURE_NAME", line 121
ORA-08932: at line 10

A string que quero exibir para o usuário éError description here. Eu posso extrair essa string usando expressões regex porque eu sei que (1) esta string está sempre na primeira linha, então eu posso extrair a primeira linha do trace da pilha de erros, e (2) esta string sempre começa comError e termina com o fim da linha. [Nota para usuários do Oracle (eu não quero enganar você): o acima só se aplica ao usar RAISE_APPLICATION_ERROR com uma string de erro começando comErrorcaso contrário, o textoError não está lá].

Minhas perguntas para Java são:

(1) Existe algo potencialmente sensível que você não gostaria que os usuários vissem na pilha de erros? Se sim, o que? Por exemplo, caminhos de arquivo, nome do servidor / IP, etc.

(2) Existe alguma regra de formatação para o rastreamento de pilha de erros Java em que posso confiar para extrair as informações não confidenciais? Ou, como os outros abordam essa preocupação?

ATUALIZAÇÃO 1:

Obrigado por todas as respostas até agora, elas foram muito úteis. Enquanto muitas pessoas comentam para usar uma função comogetUserFriendlyMessage() para mapear erros para mensagens de usuários úteis, gostaria de saber se alguém poderia expandir esse mapeamento. Ou seja, para os erros comuns (SQL, E / S etc.), o identificador "confiável" poderia ser usado para pesquisar essa pilha de erros para identificar o tipo de erro que ocorreu e, em seguida, qual cadeia de caracteres de texto você recomendaria? mapear para esta mensagem de erro para mostrar ao usuário? @ A resposta de Adarshr abaixo é um bom começo. Por exemplo,

Identified Expected   If found in error stack, display this friendly msg to user
-------------------   ----------------------------------------------------------
SQLException          An error occurred accessing the database. Please contact support at [email protected].
IOException           Connection error(?). Please check your internet connection.

Suponha que os erros relacionados à compilação não precisem ser resolvidos, mas sim focar os erros que os usuários finais podem experimentar durante o uso normal. Para referência, aqui está uma lista de mensagens de erro em tempo de execução:http://mindprod.com/jgloss/runerrormessages.html#IOEXCEPTION

Alternativamente, é possível usar apenas a PRIMEIRA LINHA do rastreamento de pilha para exibir ao usuário? Este link é mais ou menos o que eu estava fazendo na minha pergunta original acima:

http://www3.ntu.edu.sg/home/ehchua/programming/howto/ErrorMessages.html

Por exemplo, se o identificadorException é sempre usado, pode-se simplesmente extrair o texto que vem entreException e o final da primeira linha. Eu não sei se podemos confiar emException sempre estando lá.

questionAnswers(7)

yourAnswerToTheQuestion