Java: какую информацию в трассировке стека ошибок мы обычно не хотим показывать пользователям?

Я новичок в Java, и я не очень знаком с правилами форматирования, используемыми трассировкой стека ошибок, когда она генерируется и впоследствии отображается конечному пользователю моего веб-приложения.

Мой опыт работы с базой данных Oracle состоит в том, что стек ошибок содержит внутреннюю информацию, такую как имена схем и процедур и номера строк, которые, хотя и полезны для отладки, я бы хотел, чтобы пользователь не видел. Вот пример:

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

Строка, которую я хочу отобразить пользователюError description here, Я могу извлечь эту строку, используя выражения регулярных выражений, потому что я знаю (1) эта строка всегда находится на первой строке, поэтому я могу извлечь первую строку трассировки стека ошибок, и (2) эта строка всегда начинается сError и заканчивается концом строки. [Примечание для пользователей Oracle (я не хочу вводить вас в заблуждение): вышесказанное применимо только при использовании RAISE_APPLICATION_ERROR со строкой ошибки, начинающейся сErrorиначе текстError не там].

Мои вопросы по Java:

(1) Есть ли что-нибудь потенциально чувствительное, что вы не хотели бы, чтобы пользователи видели в стеке ошибок? Если да, то? Например, пути к файлам, имя сервера / IP и т. Д.

(2) Существуют ли какие-либо правила форматирования для трассировки стека ошибок Java, на которые я могу опираться при извлечении нечувствительной информации? Или как другим решать эту проблему?

ОБНОВЛЕНИЕ 1:

Спасибо за все ответы, они были очень полезны. Хотя многие люди комментируют, чтобы использовать такую функцию, какgetUserFriendlyMessage() чтобы сопоставить ошибки с полезными пользовательскими сообщениями, интересно, кто-нибудь мог бы расширить это отображение. То есть, для распространенных ошибок (SQL, I / O и т. Д.), Что является "надежным" идентификатор можно использовать для поиска в этом стеке ошибок, чтобы определить тип произошедшей ошибки, а затем какую соответствующую текстовую строку вы бы порекомендовали сопоставить с этим сообщением об ошибке, чтобы показать пользователю? Ответ @ Adarshr ниже - хорошее начало. Например,

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.

Предположим, что ошибки, связанные с компиляцией, не нужно устранять, а сосредоточьте внимание на тех ошибках, которые могут возникнуть у конечных пользователей при обычном использовании. Для справки, вот список сообщений об ошибках во время выполнения:http://mindprod.com/jgloss/runerrormessages.html#IOEXCEPTION

В качестве альтернативы, возможно ли просто использовать ПЕРВАЯ ЛИНИЯ трассировки стека для отображения пользователю? Эта ссылка является чем-то вроде того, на что я ссылался в моем первоначальном вопросе выше:

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

Например, если идентификаторException всегда используется, можно просто извлечь текст, который находится междуException и конец первой строки. Я не знаю, можем ли мы положиться наException всегда быть там.

Ответы на вопрос(7)

Ваш ответ на вопрос