Výjimky
Věci ne vždy nepracují tak jak očekáváme, doposud jsme zacházeli s naším kódem jako kdyby všechno mohlo pracovat správně, ale v skutečném světě, prakticky všechny programy generují chyby během použití.
Soubor nebude ve správném formátu, setkáte se s chybami při psaní souboru, vyčerpáte zásobu využitelné paměti a tak dále.
Dobrý programátor bude vždy předvídat takové případy a kódovat svůj program takovým způsobem, že to bude schopný zvládat tyto situace uhlazeně. Namísto tajemné "erorr blaaba 0x2526wd "" zprávy o chybě je lepší když je na obrazovce vytištěno třeba toto "chyba při otevření souboru". Nebo, vám může program poblahopřát "Blahopřání, žádné chyby v kódu.".
Koncept pojmenovaný "výjimky" existuje pro všechny tyto případy a většinou je to elegantní řešení problémů tohoto typu.Výjimka, líbí-li se vám, specifická vlastnost programovacího jazyka je instruované ovládání jistého druhu chyby.
Především, veškeré Ruby výjimky jsou předmětem třídy Exceptions a jeho potomstva.Později uvidíte proč je důležité toto vědět.Měli byste také vědět že každá výjimka má přidruženou zprávu ' význam '. Když si zvolíte definici vašich vlastních výjimek, můžete přidat dodatečnou informaci , která je již dostupná.
Jak říci Ruby že když jsou jisté podmínky splněny, vytvořím si výjimku a jak s ní budu jednat?
Použitím metody raise
raise
raise string
raise thing [ , string [ stack trace ] ]
raise
raise "Neznamy format souboru"
raise GUIException, "chyba GUI", caller
První případ vyvolá výjimku $!.Jestli $! je nula, vytvoří novou RuntimeError výjimku.
Druhá forma vytvoří novou RuntimeError výjimku,která bude mít zprávou daný řetězec.
Třetí forma vytváří výjimku vyvolávající metodu výjimka jako první argument. Zpráva výjimky a backtrace jsou druhý a třetí argument.
Tady je další vzor:
raise "Neznamy format souboru" if extension.nil
Kód výše testuje jestli jistý soubor má přidruženou příponu, jestliže ne vyvolá výjimku se zprávou "Neznámý formát souboru".
Ruby hierarchie výjimek: