V Javě existují dva typy výjimek:
1) Kontroloval: jsou výjimky, které jsou kontrolována v době kompilace. Pokud nějaký kód v rámci metody vyvolá zaškrtnutou výjimku,musí metoda buď zpracovat výjimku, nebo musí zadat výjimku pomocí klíčového slova hody.
zvažte například následující program Java, který otevře soubor na místě „C:\test\a.txt“ a vytiskne první tři řádky., Program není kompilovat, protože funkce main () používá FileReader() a FileReader () hodí kontrolovanou výjimku FileNotFoundException. To také používá readLine() a close() metody, a tyto metody také hodit zkontrolovat výjimka IOException
Výstup:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown at Main.main(Main.java:5)
opravit výše uvedený program, buď potřebujeme specifikovat seznam výjimek pomocí hody, nebo musíme použít try-catch bloku. Použili jsme hody v níže uvedeném programu., Vzhledem k tomu, že FileNotFoundException je podtřída Ioexcepce, můžeme v seznamu hodů zadat IOException a provést výše uvedený programový kompilátor-bezchybný.
Výstup: První tři řádky souboru „C:\test\a.txt“
2) Nekontrolované jsou výjimky, které nejsou kontrolovány na sestaven času. V C++ jsou všechny výjimky nezaškrtnuty, takže kompilátor není nucen ani zpracovat, ani specifikovat výjimku. Je na programátorech, aby byli civilizovaní, a určit nebo chytit výjimky.,
V Java výjimkách pod chybami a třídami RuntimeException jsou nezaškrtnuté výjimky, vše ostatní pod throwable je kontrolováno.
+-----------+ | Throwable | +-----------+ / \ / \ +-------+ +-----------+ | Error | | Exception | +-------+ +-----------+ / | \ / | \ \________/ \______/ \ +------------------+ unchecked checked | RuntimeException | +------------------+ / | | \ \_________________/ unchecked
zvažte následující program Java. Sestavuje dobře, ale hodí Aritmeticexception při běhu. Kompilátor mu umožňuje kompilovat, protože Aritmeticexception je nekontrolovaná výjimka.,2b7cfd03″>
;
int
y =
10
;
int
z = y/x;
}
}
Output:
Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:5)Java Result: 1
Why two types?,
Viz nekontrolované výjimky-diskuse o podrobnostech.
měli bychom naše výjimky zkontrolovat nebo nekontrolovat?
následuje pointa z Java documents
pokud lze rozumně očekávat, že se klient zotaví z výjimky, udělejte z něj kontrolovanou výjimku. Pokud se klient nemůže udělat nic, aby zotavit se z výjimky, aby to nekontrolovanou výjimku,
Java Rohu na GeeksforGeeks
Prosím, psát komentáře, pokud najdete něco nesprávné, nebo chcete sdílet více informací o tématu diskutovali výše.
čtenář pozornosti! Nepřestávej se učit., Sehnat všech důležitých Java Foundation a sbírek konceptů se základy Java a Java kolekcí kurzu za student-friendly cenu a stát se průmysl připraven.