Diskuze: Vyjímky - psrávné použití

C# .NET .NET (C# a Visual Basic) Vyjímky - psrávné použití American English version English version

Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Ahoj, ačkoliv už mám něco málo naprogramováno, vyjímkám jsem se vždy tak nějak trošku vyhýbal :o nebo resp. do teď je asi nepoužívám správně. Ukázka metody, která načítá data ze zadaného souboru (xml souboru) a deserializuje do kolekce.

Už předem vím, že to je trošku divný 8| Když dojde k chybě při načítání metoda vrátí null. No takže v místě kde volám tuto metodu se vlastně zpětně nedozvím k jaké chybě přesně došlo a nemůžu informovat uživatele. Jedině zjistím, že se vrátilo null (ok asi došlo k chybě) a informuju ho obecně.

Takže správnější řešení je prostě zachytit vyjímku ale "prohodit" ji dál k volajícímu a ten ať si ji zachytí ? Nebo úplně jinak ? Díky :)

public async Task<ObservableCollection<T>> LoadFileAsync<T>(string xmlFileName, StorageFolder folder)
       {
           ObservableCollection<T> list = new ObservableCollection<T>();
           try
           {

               srl = new XmlSerializer(typeof(ObservableCollection<T>));
               file = await folder.GetFileAsync(xmlFileName + ".xml");
               string text = await FileIO.ReadTextAsync(file);
               XmlReader reader = XmlReader.Create(text);
               list = (ObservableCollection<T>)srl.Deserialize(reader);
               return list;
           }
           catch
           {
               return null;
           }
       }
Odpovědět 8.9.2013 17:59
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Záleží jak to chceš, nemusíš ji chytat v téhle metodě vůbec a naopak ji chytat tam, kde metodu voláš.

Nahoru Odpovědět  +1 8.9.2013 18:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

No ono vlastně tahle třída by ani informovat vůbec neměla. Je to pouze model na načtení dat.

Jo takže to zachytím v místě kde to volám. Díky :)

Nahoru Odpovědět 8.9.2013 18:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.