Hlavní navigace

Názor k článku Go: minimalistický a překvapivě výkonný programovací jazyk od Karel - "Když nastane chyba a problém (třeba výjimka)" A v...

Článek je starý, nové názory již nelze přidávat.

  • 21. 11. 2018 13:37

    Karel (neregistrovaný) ---.cust.nbox.cz

    "Když nastane chyba a problém (třeba výjimka)"

    A v tomhle je jádro sporu. Někteří diskutující hovoří o výjimce jako o chybě nebo problému. To bude váš případ a to bude i můj případ. Jenže pak jsou tu lidé, kteří výjimky považují za zcela běžný nástroj a používají ho i na věci, které nemají nic společného s chybou nebo problémem. Jejich programy jsou prolezlé výjimkami, protože oni nikdy netestují, zda soubor existuje, zda text je číslo apod. Oni to prostě ZKUSÍ a jedou dál. Jejich program neobsahuje kód "pokud existuje starší soubor, tak ho smaž". Jejich program obsahuje kód "smaž starší soubor a ignoruj výjimku FileNotFound".

    Zde si vždy vzpomenu na jeden extrém, kde autor prostě procházel pole stylem "for(i = 0; true; i++)". Smyčku opouštěl tím, že to měl celé v TRY bloku a odchytával OutOfBounds exception. Je fakt, že pole má jen omezenou velikost, chyba nebo problém? Není to třebas samozřejmost? A co čtení souboru? Viděl jste, kolik lidí tam místo "while not eof" má prostě natvrdo čtení a chytá si výjimku "read beyond end of file"? Je snad skutečnost, že soubor má omezenou délku, chyba nebo problém? Nebo když testují, zda existuje záznam v tabulce, tak místo COUNT(*) tam dají prostě SELECT 1 INTO a odchytávají výjimku NO_DATA_FOUND. Některé zvrácenosti se už dostaly i do tutoriálů. Například že kontrola, zda řetězec obsahuje číslo, se provádí tak, že se v TRY prostě zkusí přetypovat.

    PS: Pro chyby a problémy Go nástroj má. Viz Defer, Panic a Recover. Používá to právě na věci jako je čtení mimo rozsah pole. Můžete to použít také. Není to tak silné a pohodlné jako výjimky, ale možnost to je.