Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.
[30] A nač řešit odchycení výjimky. Soustředíme se na algoritmus. Pokud vylítne výjimka uvnitř nějakého databázového výpočtu, tak máme možnost catch (...) pro uvedení databáze do konzistetního stavu a throw; pro poslání výjimky vejš. To je tak všechno, co nás ve funkci zájímá. Co si s výjimkou udělá volající je jeho věc. Klidně to může propadnout až na základní úroveň, kde se uživateli zobrazí okénko s popisem chyby, která nastala... to je další výhoda výjimek, totiž pokud má každá výjimka popis ... (a třeba v mé knihovně je to povinnost)... pak se snadno identifikuje problém.
Naopak je sice hezké, že vidím, že ve funkci jsem na pěti místech program ukončil (i za cenu použití goto!) pro chybu, kterou reportuju výše v návratové hodnotě, ale jakou mám jistotu, že si toho volající všimnul?
Další nevyhodou je, že každý programátor má vlastní systém chyb. Někdo vrací nulu, druhý jedničku, jeden vrací kód chyby, druhý používá errno, někdo na to má globální stavovou proměnnou (užijte si v MT prostředí!). Chybové kódy nejsou unikátní, mezi knihovnami se musí překládat, přičemž se často některé informace ztratí... napríklad selže zápis na disk, protože na sektoru 5128 zařízení /dev/sdb1 je chyba. No a tahle chyba propadne k uživateli jako obecná chyba -1 při pokusu uložit dokument. Na to UIčko zareaguje hláškou "není místo na disku" nebo "disk je chráněn proti zápisu", případně "nepovedlo se zapsat na disk". Diagnostika problému je v háji.... o zavádějících hláškách nemluvně.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 605×
Přečteno 27 722×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×