Základ C# 15 – Správa chýb [Errors Management]

Chyby sú tou nepríjemnejšou časťou programovania, Aj keď je najlepšie sa chybám vyhýbať, nie vždy je to ľahké a pri väčších programoch skoro nemožné.

Pri písaní programov sa chyby objavia asi vždy a nie vždy je možné sa ich úplne zbaviť.

Rozdelenie chýb

Existujú rôzne spôsoby a druhy chýb. Jedna z chýb počítačových programov je označovaná kompilátorom za varovanie [warning]. Toto reálne nemusí spôsobiť žiadne problémy, ale občas môže nasmerovať keď ich niečo nefunguje.

Druhý typ chyby je kompilátorom označovaný priamo ako chyba [error]. Chyby sú už vážnejšie – zabránia kompilácií programu a teda nie sú reálne nebezpečné.

Tretí typ chyby už začína byť komplikovanejší na odstránenie. Objavíte ho až počas behu programu a to tým, že program padne. Tieto chyby sú niekedy neriešiteľné a môžu byť závislé od konkrétneho hardwareu, systému alebo softwareu, času alebo iných podmienok – riešeniu týchto chýb sa budeme venovať neskôr.

Posledný, štvrtý typ označuje najväčší problém a to chyby, ktoré nieje možné nijak odstrániť a môžu napáchať najviac škody. Sú to chyby, na ktoré vás program neupozorní ničím – a to ani pádom. Objavíte ich nesprávnym správaním programu, alebo reálnym poškodením údajov. Môže to byť napríklad zle zapísaný súbor, alebo zle vypočítaný vzorec.

Riešenie chýb

Najťažšie na riešení chýb, je ich objavenie. Keď sa vám toto podarí, máte s polovice vyhrané. Často sú to totiž úplne triviálne veci, ako zlé znamienko, zadanie zlého parametru a podobne. Pri prvých dvoch typoch nájdenie problému nieje problém, ich pozíciu vám totiž ukáže samotný kompilátor. Pri ostatných už musíte zapojiť hlavu a snažiť sa prísť na to, kde sa nachádza. Jeden zo spôsobov ako upresniť polohu je použitie debugovania. Vo visual studiu môžete nadstaviť tzv. breakpointy, čo sú body, na ktorých sa beh programu zastaví a čaká. Označíte ich tým, že prejdete na riadok s nimi a stlačíte F9, alebo kliknete na miesto vyznačené na obrázku, tam sa vám potom ukáže ikonka červenej „guličky“.

Klikni sem pre zobrazenie obrázkov

Breakpoint umiestnený na riadku kódu.
Breakpoint umiestnený na riadku kódu.
Beh programu zastavený na breakpointe. Všimnite si zoznamu premenných vľavo dole (Locals)
Beh programu zastavený na breakpointe. Všimnite si zoznamu premenných vľavo dole (Locals)

Tlačidlami F11 alebo F10 môžte následne program púšťať po krokoch. V spodnej časti obrazovky následne máte záložky LocalsWatch.

img_5519a91cc68c6

V nich máte zobrazený aktuálny stav premenných a môžete ich upravovať. Vďaka tomu je možné objaviť množstvo chýb.

Obídenie chýb

Ak vám program v nejakom bode padne alebo zahlási chybu, je možné túto chybu preskočiť a pokračovať ďalej. Na to sa používa kombinácia try-catch-finally. Tieto funkcie dokážu v prípade chyby zabezpečiť, že kód sa zotaví.

try
{
   File.Read(filename);
   Console.WriteLine("Čítanie úspešne dokončene");
}
catch
{
   Console.WriteLine("Chyba pri čítaní");
}

Toto je try-catch kód pri čítaní zo súboru. najprv začne vykonávanie try segmentu a až v prípade chyby, sa spustí segment catch a kód pokračuje ďalej po celom try-catch. Segment try nikdy nebude dokončený a tak nebude vypísané „Čítanie úspešne dokončené“.

Catch môže obsahovať aj informácie o parametroch a tým zistiť a  vypísať, aká chyba reálne vznikla.

catch (Exception ex)
{
   Console.WriteLine("Čítanie neúspešné : " + ex.Message);
}

Už sme si tiež povedali o finally. to je možné použiť podobne ako catch, a môžu byť obidva použité zároveň. Finally splní kód v každom prípade a to aj pokiaľ je v bloku try použitý return.

try
{
   Console.WriteLine("Začiatok čítania");
   File.Read(filename);
   Console.WriteLine("Čítanie úspešne dokončene");
}
catch (Exception ex)
{
   Console.WriteLine("Chyba pri čítaní");
}
finally
{
   Console.WriteLine("Koniec čítania");
}

Čo sa týka správy chýb, je to prakticky všetko a napriek tomu, že to bol kratší diel, nabudúce bude diel dlhší a bude venovaný generikám.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Scroll to Top