Java: výjimky a jejich zacházení
Každý program bude pracovat stabilně pouze v případě, že je jeho zdrojový kód laděn a neexistují žádné podmínky, které by mohly způsobit nepředvídané situace. Proces chycení možných poruch se provádí v programovacím kroku. Za tímto účelem vývojář bere v úvahu všechny očekávané výsledky a snaží se omezit účinek chyby tak, aby nedokázal porušit program nebo vést k jeho kolapsu.
Obsah
Pokud budete muset zvládnout výjimky
V Javě mohou být výjimky způsobeny nesprávným vstupem uživatele, nedostatkem prostředků potřebných pro spuštění programu nebo náhlým vypnutím sítě. Pro pohodlné používání aplikace vytvořené vývojářem je nutné kontrolovat výskyt mimořádných situací. Spotřebitel by neměl čekat, až se zavěšený program dokončí práci, ztratí data v důsledku neošetřených výjimek nebo jednoduše se objeví zprávy, že se něco stalo.
Manipulace s výjimkami jazyka Java
Co je třeba vzít v úvahu? Jazyk Java má vlastní zabudovanou funkci zpracování výjimek. Samozřejmě, velké procento chyb je zachyceno ve fázi kompilace, kdy systém automaticky hlásí, že již nemůže být použit. Existují však i takové výjimky, které vznikají během operace programu. Developer by měl být schopen předvídat a navrhovat kód tak, aby to nemělo způsobit chybu, a ovládal ji zvláštním způsobem a předali kontrolu do jiného oboru.
V jazyce Java je kompilací uloženo takové odchytávání výjimek, takže jsou známy typické problémy a jejich vlastní standardní schéma provádění.
Typické výjimky
Nejjednodušší příklad, ve kterém můžete získat výjimku, je rozdělení. Navzdory všem jeho jednoduchosti, ve výrazu, jako dělitel, může být nula, což vede k chybě. No, pokud se jeho vzhled může předvídat dříve a zabránit. Tato možnost však není vždy dostupná, takže výjimka chyby by měla být organizována přímo, když nastane "rozdělení podle nuly".
V Javě funguje mechanismus zpracování chyb:
- Objekt vyloučení je vytvořen na haldě, stejně jako každý jiný;
- přirozený průběh programu je přerušován;
- mechanizmus výjimek se pokusí najít alternativní způsob, jak pokračovat v práci s kódem;
- Při hledání místa bezpečného provádění programu v psovodu bude práce buď obnovena, nebo výjimka bude realizována zvláštním způsobem.
Nejjednodušší příklad vytvoření chyby může vypadat takto:
pokud (a == null)
házet novou NullPointerException ();
Zde je proměnná a kontrolována pro inicializaci, tj. není rovno referenci null. V případě, že dojde k takové situaci a je zapotřebí speciální zpracování, je vyhozena výjimka s hodením nového NullPointerException ().
Několik podrobností o klíčových slovech
Při práci s výjimkami často musíte používat klíčová slova Java k odkazu na akci. V tomto programovacím jazyce je pět z nich:
- Zkuste. Toto klíčové slovo se již vyskytla a znamená, že jde o část kódu, která může vyvolat výjimku. Blok je omezen na kudrnaté příchytky {}.
- Chytit. Zahrnuje příslušný typ výjimky a správně jej zachází.
- Nakonec. Toto klíčové slovo je volitelné a slouží k provedení kódu, který je nezbytný v každém případě, i když není zachycena žádná výjimka. Je přidán bezprostředně po tryskovém bloku.
- Throw - umožňuje vytvářet výjimky Java kdekoliv v kódu.
- Throws je klíčové slovo, které je umístěno v podpisu metody. To znamená, že následující kód může vyřadit výjimku jazyka Java zadaného typu. Taková značka slouží jako signál pro vývojáře, co je třeba mít na paměti - metoda nemusí pracovat podle očekávání.
Chyť se zkusit
Uvolněním Java výjimky, samozřejmě předpokládá, že budou řešeny ve zvláštním způsobem. Nejpohodlnější způsob, jak to udělat, je-li část kódu je oplocen v bloku. Která případně obsahuje výjimku. Při spuštění tohoto kódu, bude virtuální stroj najít nečekané situace, pochopit, že tam je kritický blok a předá řízení na stanici se zpracováním.
V kódu Java je kód zabalen do speciálního bloku try, uvnitř kterého může být vyhozena výjimka. Tím narazí na několik neočekávaných situací, které budou chyceny na jednom místě, aniž by se plazily podél kódu.
Typický kód s procesním blokem vypadá takto:
zkuste {
// To určuje kód, který může udělit výjimku
} catch (Exception_Type_1 identifier_1) {
// Zde se zpracovává výjimka podle typu a podmínek;
} catch (Extraction_type_2 identifier_2) {
// Zde se zpracovává výjimka podle typu a podmínek;
}}
Klíčové slovo chyby informuje o tom, že kód podléhající kontrole výjimky by měl být zpracován, jak je popsáno níže, za předpokladu, že odpovídá jeho typu. Identifikátor lze použít jako argumenty uvnitř bloku kódu zpracování.
Nakonec
Jak bylo z předchozí kapitoly jasné, bloky úlovků zachytávají výjimky a zpracovávají je. Velmi často však existuje situace, kdy by měl nějaký kód spouštět, bez ohledu na to, zda byly chyby chyceny. K tomu konečné klíčové slovo existuje. Používá se ke zvýšení hodnot různých čítačů, uzavření souborů nebo připojení k síti.
V této oblasti je vynalezeno několik bloků úlovku s vynalezenými metodami zachytávání výjimek. Například kód obsažený v pokusu generuje neočekávanou situaci typu Cold. Pak je výraz "Chycený zima!" A "Je to něco, na co byste měli fandit?" Bude zobrazen v konzole. To znamená, že konečný blok je v každém případě proveden.
Ve skutečnosti existuje způsob, jak se nakonec vyhnout. Je spojen s ukončením virtuálního stroje. Zjistěte, jak to lze udělat na internetu.
Klíčové slovo
Throw hodí výjimku. Jeho syntaxe vypadá takto:
throw new NewException ();
Zde je vytvořena nová výjimka s typem NewException (). Jako typ můžete použít třídy již zahrnuté do standardních knihoven Java a definované dříve vývojářem vlastní výroby.
Tento návrh je součástí popisu jakýmkoliv způsobem, který je hovor by pak dojít v rámci bloku try, aby bylo možné ji zachytit.
Klíčové slovo hodí
Co dělat, pokud v procesu vývoje existuje situace, kdy metoda může hodit výjimku, ale nedokáže ji zvládnout správně. Metoda podpisu specifikuje slovo hody a typ možných výjimek.
Tento štítek je pro vývojáře klientů určitým ukazatelem, že metoda není schopna zpracovat vlastní výjimku. Kromě toho, pokud je typ chyby ověřitelný, kompilátor tuto skutečnost výslovně uvede.
Vyzkoušejte zdroje
V Javě verze 7 vývojáři zahrnovali tak důležitou inovaci jako zpracování bloku try with resources.
Mnoho objektů vytvořených v jazyce Java po jejich použití musí být uzavřeno, aby se ušetřily prostředky. Dříve jste museli tyto případy účtovat a zastavovat ručně. Nyní mají rozhraní AutoClosable. Pomáhá automatické uzavírání již použitých objektů umístěných v tryskovém bloku. Díky tomuto přístupu bylo mnohem pohodlnější psát kód, jeho čitelnost se výrazně zvýšila.
Vlastní třídy výjimek Java
Tvůrci popsaného programovacího jazyka zohlednili mnoho aspektů při navrhování typů nepředvídaných situací. Nicméně nelze zabránit všem variantám výsledku událostí, a proto v Javě je realizována možnost stanovení vlastních výjimek, vhodných přesně pro potřeby konkrétního kódu.
Nejjednodušší způsob, jak vytvořit, je dědit z objektu nejvhodnější pro kontext.
Zde jste zdědili z výjimky, třídu, která se používá k definování vlastních výjimek. V MyException existují dva konstruktory - jeden ve výchozím nastavení, druhý - s argumentem typu msg string.
Potom ve veřejné třídě FullConstructors je implementována metoda f, jejíž podpis obsahuje hody MyException. Toto klíčové slovo znamená, že f může hodit výjimku jazyka Java typu MyException. Dále v textu metody jsou textové informace vyvedeny do konzoly a skutečné generace MyException přes hod.
Druhá metoda je mírně odlišná od té první, že když si vytvoříte výjimku, je předán parametr řetězec, který se odrazí v konzoli při chytání. V hlavní budově je zřejmé, že f () a g () jsou umístěny v kontrole try a catch heslo nakonfigurován tak, aby zachytit MyException. Výsledkem zpracování je výstup chybové zprávy do konzoly:
Bylo tedy možné přidat Java výjimky vytvořené ručně.
Architektura výjimek
Stejně jako všechny objekty v Javě jsou výjimky také zděděny a mají hierarchickou strukturu. Základním prvkem všech chyb v tomto programovacím jazyce je třída java.lang.Throwable. Zdědí dva typy - Chyba a výjimka.
Chyba - upozorňuje na kritické chyby a představuje nevybrané výjimky jazyka Java. Zachycení a zpracování těchto údajů se ve většině případů vyskytuje ve fázi vývoje a nemusí být implementováno v kódu závěrečné žádosti.
Nejčastěji používanou třídou pro vytváření a analýzu výjimek je výjimka. Které z nich je rozděleno do několika větví, včetně RuntimeException. RuntimeException se vztahuje k výjimkám, které se vyskytují při spuštění programu. Všechny třídy, které z něho zdědily, jsou neověřitelné.
Časté výjimky
Výjimky Java, jejichž seznam je uveden níže, jsou nejčastěji používány, takže je vhodné podrobněji popsat každou z nich:
- AritmeticException. To zahrnuje chyby související s aritmetickými operacemi. Nejpozoruhodnějším příkladem je rozdělení nulou.
- ArrayIndexOutOfBoundsException - přistupuje k číslu prvku pole, který přesahuje jeho celkovou délku.
- ArrayStoreException - pokus o přiřazení prvku pole nekompatibilního typu.
- ClassCastException - pokus o nesprávný překlad jednoho typu do druhého.
- IllegalArgumentException - pomocí neplatného argumentu ve volání metody.
- NegativeArraySizeException je výjimka při vytváření pole negativní velikosti.
- NullPointerException - nesprávné použití nulové reference.
- NumberFormatException - nastane, když řetězec není převeden na číslo.
- UnsupportedOperationException - operace není podporována.
Tyto příklady jsou nezaškrtnuté typy výjimek Java. A tak se podívejte:
- ClassNotFoundException - třída nebyla nalezena.
- IllegalAcccessException - omezení přístupu do třídy.
- Přerušení výdeje - přerušení toku.
- NoSuchFieldException - požadované pole neexistuje.
Výklad výjimek
Pokud jde o běžné výjimky, je třeba poznamenat, že jejich interpretace v průběhu vývoje může být nesprávně vnímána. Dále je zde malý seznam, který vysvětluje podrobněji, kdy může dojít k nepředvídané situaci.
NullPointerException. V prvním okamžiku, kdy dojde k výjimce, se odkazuje na odkaz na objekt, který je nulový. To platí také pro metody nulové instance třídy. NullPointerException lze hodit a pokud je délka pole rovna nule. Vyvarujte se takových situací tím, že pravidelně kontrolujete objekty na nulu.
ArrayIndexOutOfBoundsException. Žádný program nemůže existovat bez použití polí. Častá zmínka o nich může způsobit chyby. Výjimka nastane, když se vývojář pokusí získat přístup k prvku pole, který není v seznamu indexů. Požadovaná hodnota je například nad nebo pod nulou. Často se objevuje v důsledku skutečnosti, že počet v poli začíná od nuly.
Závěry
Manipulace s výjimkami Java je výkonný nástroj pro prostředí, který velmi usnadňuje práci programátora a umožňuje mu vytvořit čistý a bezchybný kód. Stav a pověst developerské společnosti závisí na tom, jak hladce a stabilně funguje aplikace.
Samozřejmě, ve více či méně jednoduchých programech je mnohem snazší sledovat situace na volné noze. Ale ve velkých automatizovaných komplexech pro několik set tisíc linek je to možné pouze v důsledku dlouhodobého ladění a testování.
Pro výjimky Java, chyby, které vznikají v některých aplikacích, jednotlivé společnosti nabízejí odměny, když jsou nadšeni. Zvláště jsou oceněny ty, které způsobují narušení bezpečnostní politiky softwarového komplexu.
- Podrobnosti o tom, jak zakázat antivirový program AVG
- Jak nainstalovat jazyk Java v systému Windows 7
- Jak aktualizovat jazyk Java v operačních systémech Linux a Windows?
- První program Java je Hello World
- Java programovací jazyk
- Jak a proč potřebuji instalovat Java na svém počítači?
- Podrobnosti o přidávání výjimek do aplikace Kaspersky
- Podrobnosti o přidávání výjimek do Avast
- Podrobnosti o tom, jak přidat do "Výjimky" v NOD32
- Java: regulární výrazy, speciální znaky
- Programování her: programy, funkce tvorby a doporučení
- Formát JAR: co se má otevřít v počítači nebo v telefonu
- Java není nainstalována: co mám dělat? Jak nainstalovat na Ubuntu?
- BigInteger Java: práce s velkými čísly
- Co je kompilátor - popis
- Přehled užitečného softwaru: program pro úplné odstranění programů
- Jak povolit Javu ve Firefoxu pro problémy s uzamčením
- Jak odstranit java z počítače? Je to snadné!
- Co je programový kód, aplikace, chyby
- Jak psát do souboru v jazyce Java
- Podrobný popis toho, jaká je tato chyba 0xe06d7363. Jak problém vyřešit?