
Zde naleznete pokročilá C# klíčová slova, jež slouží pro zachytávání výjimek, zamykání objektů, kontrolu přetečení atd.
Výjimka je stav, kdy došlo k neočekávané chybě, kterou je potřeba zpracovat. Většina výjimek lze zachytit programem a provést blok příkazů v bloku catch. Pokud chceme, aby byl kód vykonán i v případě, že výjimka nevznikla, umístíme blok příkazů do bloku finally. Příkladem, kdy výjimka vzniká je např. dělení nulou, převádění řetězce na číslo (když nelze převést) atd. Výjimku může vyvolat i sám programátor pomocí klíčového slova throw.
Jednoduchá ukázka použití bloku s výjimkami:
try {
// blok, kde může výjimka vzniknout
}
catch { // nebo catch(typ výjimky)
// blok, který se provede pouze v případě, že došlo k výjimce
}
finally {
// blok, který se provede vždy i když výjimka nevznikla.
} |  | Try (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Do bloku try uzavřeme potenciálně nebezpečné příkazy, jež by mohly vyvolat výjimku v běhu programu. | V bloku try spustí audio soubor text.mp3. Pokud při jeho spouštění nastala nějaká výjimka (např. soubor neexistuje), uloží do proměnné s hodnotu false. Ať už byl soubor spuštěn, nebo ne vypíše obsah proměnné s. | | |
|
|
|  | Catch (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | V bloku catch můžeme zpracovat výjimku, která nastala v bloku try. | V bloku try spustí audio soubor text.mp3. Pokud při jeho spouštění nastala nějaká výjimka (např. soubor neexistuje), uloží do proměnné s hodnotu false. Ať už byl soubor spuštěn, nebo ne vypíše obsah proměnné s. | | |
|
|
|  | Finally (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Blok finally se vykoná vždy, i když došlo k výjimce v bloku try, a i když nebyla zpracována v bloku catch. | V bloku try spustí audio soubor text.mp3. Pokud při jeho spouštění nastala nějaká výjimka (např. soubor neexistuje), uloží do proměnné s hodnotu false. Ať už byl soubor spuštěn, nebo ne vypíše obsah proměnné s. | | |
|
|
|  | Throw (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Umožňuje programátorovi uměle vyvolat výjimku. | Na prvním řádku v bloku try je vyvolána výjimka s textem "Baltie" (na obrazovku se napíše "Baltie"). Pokud by se při vyvolání výjimky objevila jiná výjimka, vypíše její text. Druhý řádek dělá to samé, jen vytvoří nový objekt typu Exception a jako text mu nastaví "Baltie2". | | |
|
|
|  | Klíčové slovo 'lock' (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Toto klíčové slovo označuje blok jako kritický a získává výhradní právo přístupu k danému objektu. |
Po provedení bloku příkazů je uzamčení objektu opět uvolněno. Zamykání objektů se používá, pokud s objektem pracuje více vláken.
Syntaxe:lock ( výraz ) příkaz, nebo blok příkazů Vytvoří nový objekt o. Poté ho označí jako kritický, vypíše jeho typ jako testovací řetězec a pak ho vynuluje. | | |
|
|
|  | Klíčové slovo Checked (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Zapíná kontrolu přetečení při vyhodnocování celočíselných aritmetických výrazů. | Vytvoří novou proměnnou c typu char, do které vloží na char přetypované číslo 0. Poté vypíše na obrazovku hodnotu proměnné c a odečte z proměnné c na char přetypované číslo 1. Poté se opět pokusí vypsat hodnotu proměnné c na obrazovku, ale proměnná způsobí přetečení. | | |
|
|
|  | Klíčové slovo Unchecked (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Vypíná kontrolu přetečení při vyhodnocování celočíselných aritmetických výrazů. | Vytvoří se proměnná typu char a po vypsání se snaží snížit o jedna. V programu nevznikne výjímka a vypíše se přetěčená hodnota, protože blok je označen klíčovým slovem unchecked. | | |
|
|
Výraz v jazyce C# může být vykonán v kontrolovaném nebo nekontrolovaném kontextu. V kontrolovaném kontextu vyvolá přetečení u aritmetických operací výjimku.
V nekontrolovaném kontextu je přetečení u aritmetických operací ignorováno a výsledek je oříznut.
Pokud výraz v kontrolovaném kontextu způsobí přetečení (výsledná hodnota je větší než maximální hodnota pro daný typ), záleží zda jde o výraz konstantní nebo ne.
Konstantní výraz (ve výrazu jsou pouze konstanty nebo literály) způsobí chybu při překladu, nekonstantní výraz (s proměnnými) způsobí výjimku až při běhu programu.
Do proměnné "iter" uloží největší celé číslo typu int. Poté se ho pokusí vynásobit dvěmi, ale hodnota přeteče. Při prvním násobení není vyhozena výjimka, protože se násobí v nekontrolovaném kontextu. Druhé násobení již způsobí výjimku, protože je v kontrolovaném kontextu. | | |
|  | Klíčové slovo 'as' (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Provádí konverzi na jiný typ (bezpečné přetypování). | Vytvoří proměnnou typu ArrayList. Pak se s touto proměnou snaží pracovat jako s jiným typem. V případě, že se konverze povede (návratová hodnota není null), vypíše tuto skutečnost na konzoli. Obecně nám to umožnuje pracovat stejným způsobem s více objekty, které nutně nemusí být stejného typu, ale které mají buď stejnou rodičovskou třídu, nebo implementují stejné rozhraní. Výhodou bezpečného přetypování je, že pokud přetypování selže, bude výsledkem hodnota null. | | |
|
|
|  | Klíčové slovo 'is' (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Zjišťuje, zda se jedná o daný typ. V případě shodnosti typů vrací true. | Vytvoří nový objekt zadaného typu a v případě shodnosti typu v proměnnné vypíše řetězec na obrazovku. | | |
|
|
|  | Vytvoř objekt - klíčové slovo 'new' (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Vytvoří nový objekt zadaného typu. | Vytvoří nový objekt o. Poté ho označí jako kritický, vypíše jeho typ jako testovací řetězec a pak ho vynuluje. | | |
|
|
|  | Klíčové slovo 'this' (For modes 2D, 3D, Console) |  Zobrazit příkladSkrýt příklad | Klíčové slovo 'this' odkazuje na instanci třídy, v rámci které se kód provádí. | Vloží do lokální proměnné "c" hodnotu 5. Poté vypíše hodnotu instanční proměnné "c" a hodnotu lokální proměnné "c". | | |
|
|
Shledali jste tuto informaci pro Vás užitečnou?
Máte nějaký dotaz nebo připomínku k tomuto tématu? Napište nám.
©1978-2010 SGP SystemsNadřazená stránka | Předchozí stránka | Další stránka |