Java: jakich informacji w śledzeniu stosu błędów zazwyczaj nie chcemy pokazywać użytkownikom?

Jestem nowym użytkownikiem Java i nie jestem zaznajomiony z regułami formatowania używanymi przez ślad stosu błędów, gdy jest on rzucany, a następnie wyświetlany użytkownikowi końcowemu mojej aplikacji internetowej.

Moje doświadczenie z bazą danych Oracle polega na tym, że stos błędów zawiera informacje wewnętrzne, takie jak nazwy schematów i procedur oraz numery linii, które, choć przydatne do debugowania, chciałbym uniemożliwić użytkownikowi zobaczenie. Oto przykład:

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

Ciąg, który chcę wyświetlić użytkownikowi, toError description here. Mogę wyodrębnić ten ciąg używając wyrażeń regularnych, ponieważ wiem (1) ten ciąg jest zawsze w pierwszej linii, więc mogę wyodrębnić pierwszy wiersz śledzenia stosu błędów i (2) ten ciąg zawsze zaczyna się odError i kończy się końcem linii. [Uwaga dla użytkowników Oracle (nie chcę cię wprowadzać w błąd): powyższe dotyczy tylko używania RAISE_APPLICATION_ERROR z ciągiem błędów rozpoczynającym się odError, w przeciwnym razie tekstError nie ma tutaj].

Moje pytania dotyczące języka Java to:

(1) Czy jest coś potencjalnie wrażliwego, którego użytkownicy nie chcieliby zobaczyć w stosie błędów? Jeśli tak to co? Na przykład ścieżki do plików, nazwa serwera / IP itp.

(2) Czy istnieją jakieś zasady formatowania dla śledzenia stosu błędów Java, na których mogę polegać, aby wyodrębnić informacje niewrażliwe? Lub, jak inni rozwiązują ten problem?

AKTUALIZACJA 1:

Dzięki za wszystkie dotychczasowe odpowiedzi, były bardzo pomocne. Podczas gdy wiele osób komentuje użycie funkcji, takich jakgetUserFriendlyMessage() aby mapować błędy na użyteczne komunikaty użytkownika, zastanawiam się, czy ktoś mógłby rozwinąć to mapowanie. Oznacza to, że w przypadku typowych błędów (SQL, I / O itp.), Jaki „niezawodny” identyfikator mógłby zostać użyty do przeszukiwania tego stosu błędów, w celu zidentyfikowania rodzaju błędu, który się wydarzył, a następnie, jaki odpowiedni ciąg tekstowy byłby polecany odwzorować ten komunikat o błędzie, aby pokazać go użytkownikowi? Odpowiedź @ Adarshra poniżej to dobry początek. Na przykład,

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.

Załóżmy, że błędy związane z kompilacją nie muszą być rozwiązywane, ale skup się na tych błędach, których użytkownicy końcowi mogą doświadczyć podczas normalnego użytkowania. Dla odniesienia, oto lista komunikatów o błędach w czasie wykonywania:http://mindprod.com/jgloss/runerrormessages.html#IOEXCEPTION

Alternatywnie, czy można użyć PIERWSZEJ LINII śledzenia stosu do wyświetlenia użytkownikowi? Ten link jest w pewnym sensie tym, co miałem w moim pierwotnym pytaniu powyżej:

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

Na przykład, jeśli identyfikatorException jest zawsze używany, można po prostu wyodrębnić tekst, który jest pomiędzyException i koniec pierwszej linii. Nie wiem, czy możemy na nim polegaćException zawsze tam jest.

questionAnswers(7)

yourAnswerToTheQuestion