Odpověď na názor

Odpovídáte na názor k článku Programovací jazyk C3: reakce na chyby, odložení vykonání příkazů. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 14. 10. 2025 15:41

    Vrit

    Tak běžně při první chybě lezu z funkce (nebo scopu) ven a tímpádem se hned zavolá defer kód, čili ke změně proměnných nedochází.

    if(chyba)
    return; // tady se mi zavolá defer kód

    Účelem deferu je umožnit po sobě elegantně uklidit, bez duplikovaného kódu, bez možnosti vynechat (opomenout) nějaký třeba nově přidaný return.

    Ještě jednodušší než přemýšlet která část příkazu se vyhodnotí hned a která se odloží je uvědomit si, že žádná se nevyhodnotí hned a vše se odloží - pak není nad čím přemýšlet :-)

    Pokud bych však přesto všechno z nějakého důvodu potřeboval například vypsat hodnotu o které vím že před exitem scopu se ta hodnota změní, tak to taky není žádný problém. Mohu si při chybě alokovat paměť, do ní zapsat aktualní hodnotu nebo rovnou zformátovanou log message a v defer části ji vypsat a a uvolnit alokovanou paměť.

    14. 10. 2025, 15:43 editováno autorem komentáře