V jazyku Java, spracovanie výnimiek je jedným z účinných prostriedkov na riešenie chýb pri behu, aby sa zachoval pravidelný tok aplikácie. Java Exception Handling je mechanizmus na spracovanie runtime chýb, ako sú ClassNotFoundException, IOException, SQLException, RemoteException atď.
V tomto článku sa dozvieme o throw a throws v Jave, ktoré dokážu spracovať výnimky v Jave.
Java hod
Kľúčové slovo throw v jazyku Java sa používa na explicitné vyvolanie výnimky z metódy alebo akéhokoľvek bloku kódu. Môžeme hodiť oboje zaškrtnutá alebo nezaškrtnutá výnimka . Kľúčové slovo throw sa používa hlavne na vyvolanie vlastných výnimiek.
Syntax v Java throw
throw Instance Example: throw new ArithmeticException('/ by zero');>
Ale táto výnimka, tj. Inštancia musí byť typu Vhadzovateľné alebo podtriedu Vhadzovateľné .
Napríklad , Exception je podtrieda Throwable a používateľom definovaných výnimiek zvyčajne rozširuje triedu Exception . Na rozdiel od C++ nie je možné ako výnimky použiť dátové typy ako int, char, floats alebo non-throwable class.
Tok vykonávania programu sa zastaví ihneď po vykonaní príkazu throw a najbližšom uzavretí skúste blok sa skontroluje, či má a chytiť vyhlásenie, ktoré zodpovedá typu výnimky. Ak nájde zhodu, kontrola sa prenesie do tohto príkazu, inak sa pripojí k ďalšiemu skúste blok je skontrolovaný a tak ďalej. Ak žiadna zhoda chytiť sa nájde, potom predvolená obsluha výnimky zastaví program.
Príklady hádzania Java
Príklad 1:
Java
// Java program that demonstrates the use of throw> class> ThrowExcep {> > static> void> fun()> > {> > try> {> > throw> new> NullPointerException(> 'demo'> );> > }> > catch> (NullPointerException e) {> > System.out.println(> 'Caught inside fun().'> );> > throw> e;> // rethrowing the exception> > }> > }> > public> static> void> main(String args[])> > {> > try> {> > fun();> > }> > catch> (NullPointerException e) {> > System.out.println(> 'Caught in main.'> );> > }> > }> }> |
>
>
Výkon
Caught inside fun(). Caught in main.>
Príklad 2
Java
// Java program that demonstrates> // the use of throw> class> Test {> > public> static> void> main(String[] args)> > {> > System.out.println(> 1> /> 0> );> > }> }> |
>
>
príklad alfa beta prerezávania
Výkon
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Java hádže
throws je kľúčové slovo v jazyku Java, ktoré sa používa v podpise metódy na označenie, že táto metóda môže vyvolať jednu z uvedených výnimiek typu. Volajúci týchto metód musí spracovať výnimku pomocou bloku try-catch.
Syntax Java throws
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
Ak v programe existuje možnosť vyvolať výnimku, kompilátor nás na to vždy upozorní a povinne by sme mali túto kontrolovanú výnimku spracovať. V opačnom prípade dostaneme chybu času kompilácie, ktorá hovorí neohlásená výnimka XXX musí byť zachytená alebo vyhlásená za vyhodenú . Aby sme predišli tejto chybe pri kompilácii, môžeme výnimku spracovať dvoma spôsobmi:
- Pomocou try catch
- Pomocou hádže kľúčové slovo
Môžeme použiť kľúčové slovo throws na delegovanie zodpovednosti za spracovanie výnimiek na volajúceho (môže to byť metóda alebo JVM), potom je metóda volajúceho zodpovedná za spracovanie tejto výnimky.
Java ponúka príklady
Príklad 1
Java
// Java program to illustrate error in case> // of unhandled exception> class> tst {> > public> static> void> main(String[] args)> > {> > Thread.sleep(> 10000> );> > System.out.println(> 'Hello Geeks'> );> > }> }> |
>
>
Výkon
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Vysvetlenie
Vo vyššie uvedenom programe dostávame chybu času kompilácie, pretože existuje šanca na výnimku, ak hlavné vlákno prejde do režimu spánku, ostatné vlákna dostanú možnosť spustiť metódu main(), ktorá spôsobí InterruptedException.
Príklad 2
prioritný front c++
Java
// Java program to illustrate throws> class> tst {> > public> static> void> main(String[] args)> > throws> InterruptedException> > {> > Thread.sleep(> 10000> );> > System.out.println(> 'Hello Geeks'> );> > }> }> |
>
>
Výkon
Hello Geeks>
Vysvetlenie
Vo vyššie uvedenom programe sme pomocou kľúčového slova throws spracovali InterruptedException a výstup dostaneme ako Ahojte Geeks
Príklad 3
Java
// Java program to demonstrate working of throws> class> ThrowsExecp {> > static> void> fun()> throws> IllegalAccessException> > {> > System.out.println(> 'Inside fun(). '> );> > throw> new> IllegalAccessException(> 'demo'> );> > }> > public> static> void> main(String args[])> > {> > try> {> > fun();> > }> > catch> (IllegalAccessException e) {> > System.out.println(> 'caught in main.'> );> > }> > }> }> |
>
>
Výkon
Inside fun(). caught in main.>
Dôležité body na zapamätanie o kľúčových slovách hodov
- Kľúčové slovo throws sa vyžaduje len pre začiarknuté výnimky a použitie kľúčového slova throws pre nezačiarknuté výnimky nemá zmysel.
- Kľúčové slovo throws je potrebné len na presvedčenie kompilátora a použitie kľúčového slova throws nezabráni abnormálnemu ukončeniu programu.
- Pomocou kľúčového slova throws vieme poskytnúť informáciu volajúcemu metódy o výnimke.