Obsah:
Video: Peter Joseph - Pathologie sociale - Z-Day 2010 2025
Chyby v aplikacích Java mohou nastat v různých časech. Můžete však obecně klasifikovat, pokud k chybě dojde ve dvou kategoriích, v čase kompilace a době běhu, jak je popsáno v následujících částech.
Chyby při kompilaci
Kompilátor převede kód aplikace na kód Java byte. Během tohoto procesu trvá člověk čitelný kód, který píšete, a převede jej na něco, co Java Runtime Environment (JRE) chápe.
Pro tento proces musí kompilátor analyzovat kód, což znamená, že kód čte způsobem, který jednoznačně přesně určuje, co má aplikace dělat, když chtějí to udělat a jak chcete, aby úkol splnil. Pokud porušujete pravidla pro psaní jednoznačného kódu, kompilátor zobrazí chybovou zprávu. Tato zpráva je vlastně druh výjimky.
Parsování znamená přečíst zadaný vstup, například kód ve formě čitelné pro člověka, a přeměnit jej na něco jiného, jako je kód Java byte. Aplikace může také analyzovat vstup uživatele. Například uživatel může napsat řetězec, který se změní na číslo aplikace.
Parsování je tedy čtením nějakého typu vstupu, interpretováním tohoto vstupu určitým způsobem a následným produkováním výstupu založeného na interpretovaném vstupu. Analyzátor generuje chybu, pokud vstup není očekáván.
Například pokud uživatel zadá řetězec obsahující písmeno C a očekáváte, že řetězec obsahující číslo, například 123, analyzátor generuje výjimku říká, že vstup je nesprávný.
Nejjednodušší je zpracovat chyby při kompilaci, protože kompilátor obvykle říká, co je špatně a kde došlo k chybě. Dokonce i když informace nejsou přesné, kompilátor přinejmenším vás přivede do pravé oblasti rozbitého kódu, takže můžete hledat chybu, kterou obsahuje.
Chcete-li zajistit, aby každý přesně chápal, jak má jazyk Java pracovat, vývojáři pro něj vytvoří specifikaci. Tato specifikace obsahuje prvky jazyka ve zvláštním jazyce nazývaném Backus-Naur Form (BNF). Použití metody BNF je velmi přesná metoda popisu jazyka tak, aby nikdo nehrozil riziko nesprávného výkladu.
U vzorku BNF pro jazyk Java můžete vidět na katedře informatiky - Daimi. Nebojte se moc, abyste mohli číst tuto specifikaci. Většina vývojářů se nikdy neučí interpretovat BNF pro jazyky, které používají - to je doména vývojářů kompilátorů.
Chyby při běhu
Kompilátor jazyka Java nemůže nalézt všechny chyby ve vašem kódu. Je-li forma kódu správná (to znamená, že jste neudělali žádné chyby při psaní prvků, které vytvářejí aplikaci), kompilátor nenalezne chybu.
Například pokud inicializujete číselnou hodnotu na 5 místo 4, kompilátor nemůže najít chybu pro vás, protože kompilátor nemá tušení, že jste opravdu chtěli zadat typ 4. Tyto chyby vytvářejí runtime chyby - ty chyby, které se vyskytnou v určitém okamžiku během provádění aplikace.
Chyby při běhu mohou nastat v nejrůznějších časech. Některé chyby se pravděpodobně vyskytují v určitých časech. Následující seznam obsahuje některé nápady, kdy se pravděpodobně vyskytnou chyby runtime:
-
Inicializace: Když se aplikace spustí nejprve - předtím, než představuje nějaké rozhraní k uživateli nebo provádí jakoukoli užitečnou práci - prochází fázi inicializace. Toto je při nastavování proměnné na nesprávný typ nebo pokusu o použití proměnné před inicializací to si všiml. Během inicializace dochází k mnoha chybám souvisejícím s zdroji, protože většina aplikací během této doby otevře požadované zdroje.
-
Provozní režim: Po inicializaci aplikace je v provozním režimu. Pokud má uživatelské rozhraní, začne pracovat s uživatelem. Toto je doba, kdy uživatelský vstup má nejdůležitější význam.
V tomto okamžiku najdou také nesprávně inicializované proměnné, protože uživatel (nebo příjemce výstupu aplikace, například systém) uvidí, že výstup je nesprávný. Požadavky uživatelů na zdroje, například datový soubor, také vytvářejí chyby během této doby.
-
Zpracování na pozadí: Většina chyb zpracování na pozadí pochází z prostředí (například ztráta síťového připojení), chybějící zdroje (například ztracený soubor), nesprávně inicializované proměnné nebo chyby v tom, k provedení úkolu. Některé úkoly jsou častěji prováděny na pozadí než jiné.
Tisk dokumentu nebo stahování zdrojů z Internetu se běžně provádí na pozadí, zatímco uživatel nadále pracuje s aplikací v popředí.
-
Vypnutí: Pokud uživatel (včetně systémových účtů) informuje aplikaci, že již není potřeba, aplikace prochází fází vypnutí. Během této fáze zavírání aplikace zavře soubory a provádí jiné úklidové práce, které zajistí, že aplikace nezanechává nepořádek pro operační systém.
Nejčastější chyby, ke kterým může dojít během této fáze, nejsou uvolnění prostředků, které aplikace používala, a neukládání dat na disk. Samozřejmě se mohou kdykoli vyskytnout chyby kódování a tato fáze provozu není výjimkou. Dalo by se řešit aplikaci uzavřít pět souborů, když jen čtyři z nich jsou skutečně otevřené.
JRE zobrazí většinu chyb při běhu, které vám detekuje jako výjimky. JRE však nebude chybět ve vaší aplikaci.Musíte se také podívat na výstup aplikace, abyste zjistili, zda výstup odpovídá očekáváním, které máte pro daný vstup.
Navíc je důležité podívat se na stav všech zdrojů, které používáte k zajištění toho, že nejsou nějakým způsobem poškozeny. Například je třeba zajistit, aby všechna data, která by měla uložena do souboru, skončila v souboru, když se aplikace vypne.
Java 8 má větší důraz na zabezpečení, což znamená, že při práci s vaší aplikací uvidíte více instancí SecurityException.
Zvýšení bezpečnostních výjimek neznamená, že je váš kód vadný nebo java 8 je vyplněna chybami - to znamená, že Java 8 automaticky vyhledá a upozorní na problémy, které by mohly způsobit bezpečnostní problémy, když lidé používají vaši aplikaci.
Dokumentace SecurityException se zobrazí v jazyce Java. síť. Samozřejmě, budete chtít vědět, o čem je celý hubbub.
