Uživatelské nástroje

Nástroje pro tento web


lua:exeptions

Doporučený postup zpracování vyjímek

Sekce do … end omezí obor platnosti lokalni proměnné finally*. Jinak platí az do konce bloku. Odsazením se zvýrazní odkud-kam je chráněný blok.

local File = io.open(FileName, "r")
do local function finally_Close() File:close() end
  ...
  finally_Close()
end 

error("Pri neomezeni pomoci do...end se ted znovu zavola finally_Close()!")

V ramci jedne funkce neni vhodne vyjimky zanorovat. Ve vnitrnim bloku jsou obe finally funkce lokalni a poradi volani neni presne dano. Nejdriv zavola ta drive definovana a posleze ta vnitrni. Tedy obracene nez je ocekavano.

Požadujeme-li ignorování vyjímky vrátíme z funkce true. Finally* funkce dostává jako parametr chybovou zpravu.

local function finally_except(msg) print(msg) return true end

Doporučení: Není-li možno ve funkci úspěšně dále pokračovat přerušte ji pomocí error("Zpráva"). Bude přerušena i volající funkce atd… až do místa odchycení vyjímky. Typicky zpráva uživateli.

lua/exeptions.txt · Poslední úprava: 2011/04/07 09:53 autor: Petr Kristan