Výjimka (programování): Porovnání verzí

Smazaný obsah Přidaný obsah
m Mormegil přesunul stránku Exception na Výjimka (programování): česky
m linkfix +oprava syntaxe (to očividně není C#, ML není podporován)
Řádek 20:
 
== Podpora výjimek v programovacích jazycích ==
Programovací jazyky s implicitně zabudovanou podporou zpracování výjimek zahrnují, ale neomezují se jen na: [[Ada]], [[C++]], [[C Sharp|C#]] a jiné programovací jazyky platformy [[.NET]], [[Eiffel (programovací jazyk)|Eiffel]], [[Java (programovací jazyk)|Java]], [[Object Pascal]] (např. [[Delphi]]), [[PHP]] verze 5a vyšší, [[Prolog (programovací jazyk)|Prolog]], [[Python]], [[Ruby (programovací jazyk)|Ruby]] a mnohé další.
Zpracování výjimek v těchto programovacích jazycích téměř výhradně neobnovuje chod programu a ve většině případů dochází k postupnému zpětnému procházení zásobníku, než je nalezen příslušný objekt zpracovávající výjimku.
Abstrahujeme-li od drobných syntaktických rozdílů, existuje velmi málo přístupů ke zpracování výjimek na úrovni zdrojového kódu. Nejrozšířeněji je proces zpracování výjimky spuštěn klauzulí „throw“ nebo „raise“, případně objektem výjimky. Blok s výjimkou obvykle začíná klauzulí „try“ nebo „begin“, jednotlivé chybové stavy jsou poté označeny bloky „catch“ nebo „except“. Celý blok zpracování výjimky je ukončen sekcí „finally“ nebo „ensure“, která slouží pro uvolnění systémových zdrojů použitých při zpracování výjimky.
Jako celek může deklarace výjimky (v pseudokódu podobném jazyku Java) vypadat např. takto:
 
<source lang=CSharp"java">
try {
line = console.readLine();
Řádek 45:
Následující kód ukazuje deklaraci výjimky v jazyce ML a její následné použití v kódu a ošetření<ref>Ukázka převzata z: http://www.cs.cmu.edu/~rwh/introsml/core/exceptions.htm</ref>:
 
<sourcepre>
exception Factorial
 
Řádek 66:
end
handle Factorial => print "Out of range.\n"
</pre>
 
</source>
 
Jak můžeme vidět, výjimka řeší situaci, kdy je funkci faktoriálu zadáno jako parametr záporné číslo (faktoriál záporného čísla neexistuje). V tomto případě program zobrazí chybovou hlášku „Out of range“ ve výstupním okně, které je implicitně zvoleno (obvykle se jedná o konzolový výstup).