logo

hádzať a hádzať v Jave

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:

  1. Pomocou try catch
  2. 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.