Internationalisierung von Exceptions

  • Themenstarter Themenstarter Gast2
  • Beginndatum Beginndatum
G

Gast2

Gast
Hallo an alle. Fange gerade mit der I18n von den Exceptions in meinem Programm an.

Daher meine Frage:

Wie löst man das standardmäßig?

Macht man die Unterscheidung welcher Fehlertext dem Nutzer (z.B. in Fehlerdialog) angezeigt bekommt anhand des Exceptions Typs oder steckt als descritpion ein Text drin welcher über properties I18n wird?

Für nen Link der das Thema behandelt wär ich echt dankbar.

PS: Habe gesehen, dass Logger direkt mittels ResourceBundle übersetzen können. Mir gehts jedoch wirklich um Dialoge die angezeigt werden.
 
Exceptions sind IMO Hinweise an Developer und sollten nicht internationalisiert werden. Der End-User sollte meiner Meinung niemals einen Stack-Trace zu sehen bekommen! Diese Dinge gehören in ein Log-File, das sich ein Java-Developer anschauen muss.

Anders sieht es mit Dialogen aus. Diese sollen natürlich internationalisiert werden. Hierfür gibt es ResourceBundle.
 
Exceptions sind IMO Hinweise an Developer und sollten nicht internationalisiert werden. Der End-User sollte meiner Meinung niemals einen Stack-Trace zu sehen bekommen! Diese Dinge gehören in ein Log-File, das sich ein Java-Developer anschauen muss.

Anders sieht es mit Dialogen aus. Diese sollen natürlich internationalisiert werden. Hierfür gibt es ResourceBundle.

Irgendwie stand das schon alles in meinem Post...

Ich möchte aufgrund von Exceptions Fehlerdialoge anzeigen. Meine Frage war doch eben wie man das I18n. Wird die Description der auslösenden Exceptions als Schlüssel für das ResourceBundle verwendet, oder der Typ der Exception?

Es war nie die Rede davon Stack traces anzuzeigen. Die gehören natürlich nicht in einen Dialog.
 
Das ist meiner Meinung nach vom Einzelfall abhängig.

Nehmen wir als Beispiel java.io.FileNotFoundException. Diese könnte beim Laden einer Konfigurationsdatei als auch beim Laden einer normalen Datei geworfen werden.

Da möchtest Du doch wahrscheinlich den User kontext-abhängig daruf hinweisen, dass die Konfigurationsdatei bzw. die normale Datei nicht gefunden wurden. Also referenziert Dein Code den I18N-Text weder über den Exception-Text noch den Typ, sondern über einen Schlüssel, der in Deinem Programm Sinn macht.
 
Das Anzeigen des Dialoges ist ja mehr eine Reaktion auf die Exception. Was du dort anzeigst, würde ich in einer language-Datei festhalten, so wie du es sonst auch machst. Die Exception würde ich mitloggen, wenn du den Exception-Text zeigen willst, kannst du entweder beim Werfen auf den Spracheintrag zurückgreifen oder du hältst es einfach in Englisch oder du schreibst einfach (fatal)Error. Den egal was du schreibst, der Benutzer wird nicht viel mit Anfangen können ;-). In so einem Falle, würde ich aber noch eine Report-Möglichkeit anbieten, welche dir den Stack sendet.
 
Das Anzeigen des Dialoges ist ja mehr eine Reaktion auf die Exception. Was du dort anzeigst, würde ich in einer language-Datei festhalten, so wie du es sonst auch machst. Die Exception würde ich mitloggen, wenn du den Exception-Text zeigen willst, kannst du entweder beim Werfen auf den Spracheintrag zurückgreifen oder du hältst es einfach in Englisch oder du schreibst einfach (fatal)Error. Den egal was du schreibst, der Benutzer wird nicht viel mit Anfangen können ;-). In so einem Falle, würde ich aber noch eine Report-Möglichkeit anbieten, welche dir den Stack sendet.

Ich logge grundsätzlich alle Fehler inklusive komplettem Stack Trace in Log files. Sogar system.err und out habe ich in separate Dateien umgeleitet um besonders in der Anfangsphase wirklich alles mitloggen zu können was passiert (auch Runtime errors).

Es geht tatsächlich nur darum dem Benutzer noch einen Fehler Dialog anzuzeigen wo es Sinn macht.

Werde die Dialoge über den Typ referenzieren und entsprechende Zusatzinfos aus meinem Framework laden.

Im Zweifel nur den Hinweis an den User: "Nicht näher spezifizierter Laufzeit Fehler! Bitte senden Sie den Logfile an den Support" oder sowas in der Art (Natürlich I18n).

Damit erledigt!
 

Zurück
Oben