Witam kolegów programistów, mam pewne pytanie natury techniczno-estetycznej.
Załóżmy że posiadam taki kod:
Config.Properties["script"] = textScript.Text;//script
Config.Properties["desired"] = textDesired.Text; //desired
Config.Properties["api"] = comboApi.Text;//api
Config.Properties["p"] = comboP.Text;//p
Config.Properties["p mode"] = comboMode.Text;//p mode
Config.Properties["aa"] = comboAA.Text;//aa
Config.Properties["procskip"] = comboProcskip.Text;//procskip
Config.Properties["disableoverlay"] = checkOverlay.Checked.ToString();
Config.Properties["forcefullscreen"] = checkFullscreen.Checked.ToString();
Config.Properties["safecapture"] = checkSafecap.Checked.ToString();
Config.Properties["steamfix"] = checkSteamFix.Checked.ToString();
Config.Properties["defaulttemp"] = checkDefaultTemp.Checked.ToString();
Klasa Config posiada jedno pole właściwości które jest słownikiem i służy po prostu do trzymania danych i zapisywania ich do pliku z ustawieniami w stylu zmienna=wartość. I teraz zakładamy że przy ładowaniu takiego pliku, chce pobrać wartość tej zmiennej odwołując się np. tak:
framesPath = Config.Properties["framesPath"];
Jako że istnieje szansa braku tej wartości w pliku z configiem to poleci wtedy wyjątek. I moje pytanie brzmi w jaki sposób najlepiej obsłużyć tą sytuacje?
Czy mam ifem sprawdzać każdą pojedyńczą wartość czy istnieje i dopiero ją odczytywać tzn:
if (Config.Properties.ContainsKey("framesPath"))
framesPath = Config.Properties["framesPath"];
if (Config.Properties.ContainsKey("Path"))
Path = Config.Properties["Path"];
if (Config.Properties.ContainsKey("TempPath"))
TempPath= Config.Properties["TempPath"];
itd.
czy też zrobic blok try catch na każdą jedną zmienna?
try
{
framesPath = Config.Properties["framesPath"];
}
catch(blabla)
try
{
path = Config.Properties["path"];
}
catch(blabla)
Oba sposoby wydają mi się trochę nadmiarowe i pisać całe konstrukcje z ifami za każdym odczytaniem zmiennej jest imho trochę bez sensu.