ich bin auf der Suche nach einer geeigneten Struktur für Fehlercodes. Bisher habe ich das wie folgt gehandhabt:
public enum ErrorCodes
{
WEBEXCEPTION = 100,
WEBTIMEOUT = 101,
WEBURINOTFOUND = 102,
THREADEXCEPTION = 200,
FILENOTFOUND = 300,
DIRNOTFOUND = 301,
DIRNOTACCESSABLE = 303,
...
}
Nun brauche ich derzeit passend zu den jeweiligen Fehlercodes lokalisierte Fehlertexte. Ein Ansatz wäre folgender:
public string GetText(ErrorCodes code)
{
switch (code)
{
case ErrorCodes.WEBEXCEPTION:
return Properties.Resources.ERR_WEBEXCEPTION;
case ErrorCodes.WEBTIMEOUT:
return Properties.Resources.ERR_WEBTIMEOUT;
....
}
}
Die lokalisierten Texte liegen also in Resourcendateien, was ich sehr aufwändig in der Wartung finde (Texte können in Sprachen vergessen werden ohne dass man es merkt).
Ein anderer Ansatz wäre dieser:
public string GetText(ErrorCodes code)
{
string lang = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.ToLower();
switch (code)
{
case ErrorCodes.WEBEXCEPTION:
if (lang.Equals("de")) return "Unbekannter Fehler bei ...";
if (lang.Equals("en")) return "Unknown error during ...";
case ErrorCodes.WEBTIMEOUT:
if (lang.Equals("de")) return "Zeitüberschreitung der Internetverbindung";
if (lang.Equals("en")) return "Timeout error of internet connection");
....
}
}
Auch hier kann ich div. Texte vergessen.
Ich würde bei der Definition der Fehlercodes gern bei einem enum bleiben (da ich hier sichergehen kann, dass Fehlercodes nur einmal vergeben werden und der Zugriff sehr einfach von überall möglich ist).
Ich habe nun daran gedacht, das enum durch ein struct zu ersetzen und dort die entsprechenden Informationen abzulegen, was den Vorteil hätte, dass keine Informationen fehlen können und sämtliche Texte in einer Datei stehen. Mein Ansatz:
public struct ErrorCode
{
private int code;
private string langDE;
private string langEN;
public int Code { get { return this.code; } }
public string LangDE { get { return this.langDE; } }
public string LangEN { get { return this.LangEN; } }
public ErrorCode(int pCode, string pLangDE, string pLangEN)
{
this.code = pCode;
this.langDE = pLangDE;
this.langEN = pLangEN;
}
}
public static class ErrorCodes
{
public static ErrorCode WEBSERVICE_EXC
{
get { return new ErrorCode(100, "Fehler bei ..", "Error during .."); }
}
public static ErrorCode THREAD_EXC
{
get { return new ErrorCode(200, "Fehler bei ...", "Error during ..."); }
}
}
Kennt jemand eine elegantere Lösung zur Verwaltung von Fehlercodes und lokalisierten Fehlertexten?