Java: ¿qué información en el seguimiento de la pila de errores no queremos mostrar a los usuarios?

Soy nuevo en Java y no estoy familiarizado con las reglas de formato utilizadas por un seguimiento de la pila de errores cuando se lanza y luego se muestra a un usuario final de mi aplicación web.

Mi experiencia con la base de datos Oracle es que la pila de errores contiene información interna, como nombres de esquemas y procedimientos y números de línea, que, aunque es útil para la depuración, me gustaría evitar que el usuario vea. Aquí hay un ejemplo:

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

La cadena que quiero mostrar al usuario esError description here. Puedo extraer esta cadena usando expresiones regulares porque sé que (1) esta cadena siempre está en la primera línea, así que puedo extraer la primera línea del seguimiento de la pila de errores, y (2) esta cadena siempre comienza conError y termina con el final de la línea. [Nota para los usuarios de Oracle (no quiero engañarlo): lo anterior solo se aplica cuando se utiliza RAISE_APPLICATION_ERROR con una cadena de error que comienza conErrorde lo contrario el textoError No está ahí].

Mis preguntas para Java son:

(1) ¿Hay algo potencialmente sensible que no querría que los usuarios vieran en la pila de errores? ¿Entonces qué? Por ejemplo, rutas de archivos, nombre de servidor / IP, etc.

(2) ¿Existen reglas de formato para el seguimiento de la pila de errores de Java en las que puedo confiar para extraer la información no confidencial? O, ¿cómo otros abordan esta preocupación?

ACTUALIZACIÓN 1:

Gracias por todas las respuestas hasta ahora, han sido muy útiles. Mientras que muchas personas comentan usar una función comogetUserFriendlyMessage() para asignar errores a mensajes de usuario útiles, me pregunto si alguien podría ampliar esta asignación. Es decir, para los errores comunes (SQL, E / S, etc.), qué identificador "confiable" podría usarse para buscar en esta pila de errores para identificar el tipo de error que ocurrió, y luego qué cadena de texto correspondiente recomendaría ¿Asignar a este mensaje de error para mostrar al usuario? La respuesta de @Adarshr a continuación es un buen comienzo. Por ejemplo,

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.

Suponga que los errores relacionados con la compilación no necesitan abordarse, sino que se centran en los errores que los usuarios finales pueden experimentar durante el uso normal. Para referencia, aquí hay una lista de mensajes de error en tiempo de ejecución:http://mindprod.com/jgloss/runerrormessages.html#IOEXCEPTION

Alternativamente, ¿es posible usar la PRIMERA LÍNEA de la traza de pila para mostrar al usuario? Este enlace es una especie de a lo que me refería en mi pregunta original anterior:

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

Por ejemplo, si el identificadorException siempre se utiliza, uno podría simplemente extraer el texto que se encuentra entreException y el final de la primera línea. No sé si podemos confiar enException siempre estar ahi

Respuestas a la pregunta(7)

Su respuesta a la pregunta