Chyby jsou klamem uživatelů i programátorů. Vývojáři samozřejmě nechtějí, aby jejich programy padaly na každém kroku a uživatelé jsou nyní zvyklí na chyby programy, které neochotně akceptují, že zaplatí cenu za software, který bude mít téměř jistě alespoň jednu chybu to. Jáva je navržen tak, aby programátorovi poskytl sportovní šanci při navrhování bezchybné aplikace. Existují výjimky, které bude programátor vědět, existuje možnost, kdy aplikace interaguje se zdrojem nebo uživatelem a tyto výjimky lze zpracovat. Bohužel existují výjimky, které programátor nemůže ovládat, nebo jednoduše přehlédnout. Stručně řečeno, všechny výjimky nejsou vytvořeny rovnocenné, a proto existuje několik typů, na které by měl programátor uvažovat.
Výjimka je událost, která způsobí, že program nebude schopen proudit v zamýšleném spuštění. Existují tři typy výjimek - zaškrtnutá výjimka, chyba a výjimka za běhu.
Kontrolovaná výjimka
Kontrolované výjimky jsou výjimky, s nimiž by aplikace Java měla být schopna se vypořádat. Například, pokud aplikace čte data ze souboru, měla by být schopna zpracovat
FileNotFoundException
. Koneckonců neexistuje žádná záruka, že očekávaný soubor bude tam, kde má být. V systému souborů by se mohlo stát cokoli, o čem by aplikace neměla tušení.Abychom učinili tento příklad o krok dále. Řekněme, že používáme FileReader
třídy pro čtení znakového souboru. Pokud se podíváte na Definice konstruktoru FileReader v api Java uvidíte podpis metody:
public FileReader (String fileName) vyvolá FileNotFoundException.
Jak můžete vidět, konstruktor konkrétně uvádí, že FileReader
konstruktor může hodit FileNotFoundException
. To dává smysl, protože je vysoce pravděpodobné, že název souboru
Řetězec bude čas od času špatný. Podívejte se na následující kód:
public static void main (String [] args) { FileReader fileInput = null; // Otevřete vstupní soubor. fileInput = new FileReader ("Untitled.txt"); }
Syntakticky jsou příkazy správné, ale tento kód se nikdy nezkompiluje. Kompilátor zná FileReader
konstruktor může hodit FileNotFoundException
a je na volajícím kódu, aby tuto výjimku zvládl. Existují dvě možnosti - nejprve můžeme předat výjimku z naší metody zadáním a hází
klauzule také:
public static void main (String [] args) vyvolá FileNotFoundException { FileReader fileInput = null; // Otevřete vstupní soubor. fileInput = new FileReader ("Untitled.txt"); }
Nebo to zvládneme s výjimkou:
public static void main (String [] args) { FileReader fileInput = null; Snaž se. { // Otevřete vstupní soubor. fileInput = new FileReader ("Untitled.txt"); } catch (FileNotFoundException ex) { // řekněte uživateli, aby soubor vyhledal. } }
Dobře napsané Java aplikace by měly být schopny zvládnout kontrolované výjimky.
Chyby
Druhý druh výjimky je známý jako chyba. Pokud dojde k výjimce, JVM vytvoří objekt výjimky. Všechny tyto objekty pocházejí z Hodit
třída. Hodit
třída má dvě hlavní podtřídy— Chyba
a Výjimka
. Chyba
třída označuje výjimku, kterou aplikace pravděpodobně nebude schopna řešit.
Tyto výjimky jsou považovány za vzácné. Například JVM může docházet zdroje, protože hardware není schopen zvládnout všechny procesy, se kterými se musí vypořádat. Je možné, že aplikace zachytí chybu a upozorní uživatele, ale obvykle se aplikace bude muset zavřít, dokud nebude vyřešen základní problém.
Výjimky za běhu
A runtime výjimka dochází jednoduše proto, že programátor udělal chybu. Napsali jste kód, všechno to vypadá dobře kompilátoru a když jdete ke spuštění kódu, převrhne se, protože to se pokusil o přístup k prvku pole, který neexistuje nebo logická chyba způsobila, že metoda byla volána s nulovou hodnotou hodnota. Nebo jakýkoli počet chyb, které může programátor udělat. Ale to je v pořádku, tyto výjimky zaznamenáváme vyčerpávajícím testováním, že?
Chyby a výjimky za běhu spadají do kategorie nekontrolovaných výjimek.