In Java: afhandeling van uitzonderingen is een van de effectieve manieren om runtime-fouten af te handelen, zodat de reguliere stroom van de applicatie behouden kan blijven. Java Exception Handling is een mechanisme voor het afhandelen van runtimefouten zoals ClassNotFoundException, IOException, SQLException, RemoteException, enz.
java regex $
In dit artikel zullen we meer te weten komen throw en throws in Java die uitzonderingen in Java kunnen verwerken.
Java-worp
Het sleutelwoord throw in Java wordt gebruikt om expliciet een uitzondering te genereren vanuit een methode of een ander codeblok. We kunnen beide gooien aangevinkte of niet-aangevinkte uitzondering . Het trefwoord throw wordt voornamelijk gebruikt om aangepaste uitzonderingen te genereren.
Syntaxis in Java-worp
throw Instance Example: throw new ArithmeticException('/ by zero');> Maar deze uitzondering, d.w.z. Voorbeeld moet van type zijn Gooibaar of een subklasse daarvan Gooibaar .
Bijvoorbeeld , een Exception is een subklasse van Throwable en door de gebruiker gedefinieerde uitzonderingen breiden doorgaans de Exception-klasse uit. In tegenstelling tot C++ kunnen gegevenstypen zoals int, char, floats of niet-werpbare klassen niet als uitzonderingen worden gebruikt.
De uitvoeringsstroom van het programma stopt onmiddellijk nadat de throw-instructie is uitgevoerd en de dichtstbijzijnde omhulling poging blok wordt gecontroleerd om te zien of het een vangst instructie die overeenkomt met het type uitzondering. Als er een overeenkomst wordt gevonden, wordt gecontroleerd naar die verklaring overgebracht, anders wordt deze bijgevoegd poging blok wordt gecontroleerd, enzovoort. Indien geen match vangst wordt gevonden, zal de standaard uitzonderingshandler het programma stoppen.
Voorbeelden van Java-worpen
Voorbeeld 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.'>);> >}> >}> }> |
>
>
Uitvoer
Caught inside fun(). Caught in main.>
Voorbeeld 2
Java
// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }> |
>
char en int java
>
Uitvoer
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Java gooit
throws is een sleutelwoord in Java dat wordt gebruikt in de handtekening van een methode om aan te geven dat deze methode mogelijk een van de vermelde type-uitzonderingen genereert. De aanroeper van deze methoden moet de uitzondering afhandelen met behulp van een try-catch-blok.
Syntaxis van Java-worpen
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
Als er in een programma een kans bestaat om een uitzondering te genereren, waarschuwt de compiler ons er altijd voor en moeten we verplicht die gecontroleerde uitzondering afhandelen. Anders krijgen we een foutmelding tijdens het compileren: niet-gemelde uitzondering XXX moet worden opgevangen of als gegooid worden verklaard . Om deze compileerfout te voorkomen, kunnen we de uitzondering op twee manieren afhandelen:
- Door gebruik te maken van try-catch
- Door gebruik te maken van de gooit trefwoord
We kunnen het trefwoord throws gebruiken om de verantwoordelijkheid voor het afhandelen van uitzonderingen te delegeren aan de aanroeper (het kan een methode of JVM zijn), waarna de aanroepmethode verantwoordelijk is voor het afhandelen van die uitzondering.
Java gooit voorbeelden
voorbeeld 1
Java
greibach normale vorm
// 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'>);> >}> }> |
>
>
Uitvoer
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Uitleg
In het bovenstaande programma krijgen we een compileerfout omdat er een kans is op een uitzondering als de hoofdthread gaat slapen, andere threads krijgen de kans om de main() -methode uit te voeren, wat InterruptedException zal veroorzaken.
Voorbeeld 2
Java
// Java program to illustrate throws> class> tst {> >public> static> void> main(String[] args)> >throws> InterruptedException> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }> |
c++ splitsreeks
>
>
Uitvoer
Hello Geeks>
Uitleg
In het bovenstaande programma hebben we, door het trefwoord throws te gebruiken, de InterruptedException afgehandeld en krijgen we de uitvoer as Hallo Geeks
Voorbeeld 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.'>);> >}> >}> }> |
tekenreeks om te chatten
>
>
Uitvoer
Inside fun(). caught in main.>
Belangrijke punten om te onthouden over worpen Trefwoord
- het trefwoord throws is alleen vereist voor gecontroleerde uitzonderingen en het gebruik van het trefwoord throws voor niet-gecontroleerde uitzonderingen is zinloos.
- het trefwoord throws is alleen nodig om de compiler te overtuigen en het gebruik van het trefwoord throws voorkomt niet dat het programma op abnormale wijze wordt beëindigd.
- Met behulp van het trefwoord throws kunnen we de aanroeper van de methode informatie geven over de uitzondering.