A Java, gestió d'excepcions és un dels mitjans eficaços per gestionar els errors en temps d'execució de manera que es pugui preservar el flux regular de l'aplicació. La gestió d'excepcions de Java és un mecanisme per gestionar errors en temps d'execució com ClassNotFoundException, IOException, SQLException, RemoteException, etc.
En aquest article, aprendrem sobre throw i throws a Java que pot gestionar excepcions a Java.
Llançament de Java
La paraula clau throw a Java s'utilitza per llançar explícitament una excepció d'un mètode o qualsevol bloc de codi. Podem llençar qualsevol excepció marcada o no marcada . La paraula clau throw s'utilitza principalment per llançar excepcions personalitzades.
Sintaxi en Java throw
throw Instance Example: throw new ArithmeticException('/ by zero');> Però aquesta excepció, és a dir, Instància ha de ser del tipus Llançable o una subclasse de Llançable .
Per exemple , una excepció és una subclasse de Throwable i les excepcions definides per l'usuari generalment estenen la classe Exception . A diferència de C++, els tipus de dades com int, char, floats o classes que no es poden llançar no es poden utilitzar com a excepcions.
El flux d'execució del programa s'atura immediatament després d'executar la instrucció throw i el tancament més proper. provar es comprova el bloc per veure si té un agafar declaració que coincideixi amb el tipus d'excepció. Si troba una coincidència, controlat es transfereix a aquesta declaració, en cas contrari, s'adjunta el següent provar el bloc està marcat, i així successivament. Si no coincideix agafar es troba, llavors el controlador d'excepcions predeterminat aturarà el programa.
Exemples de llançament de Java
Exemple 1:
emojis d'iphone al telèfon Android
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.'>);> >}> >}> }> |
>
>
Sortida
Caught inside fun(). Caught in main.>
Exemple 2
Java
// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }> |
>
>
Sortida
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Llançaments de Java
throws és una paraula clau en Java que s'utilitza en la signatura d'un mètode per indicar que aquest mètode pot llançar una de les excepcions de tipus enumerades. La persona que truca a aquests mètodes ha de gestionar l'excepció mitjançant un bloc try-catch.
Sintaxi de llançaments de Java
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
En un programa, si hi ha la possibilitat de generar una excepció, el compilador sempre ens avisa sobre això i obligatòriament hauríem de gestionar aquesta excepció marcada, en cas contrari, obtindrem un error de compilació que diu l'excepció no notificada XXX s'ha d'atrapar o declarar que es llança . Per evitar aquest error de temps de compilació, podem gestionar l'excepció de dues maneres:
- Mitjançant l'ús try catch
- Mitjançant l'ús de llançaments paraula clau
Podem utilitzar la paraula clau throws per delegar la responsabilitat del maneig d'excepcions a la persona que truca (pot ser un mètode o JVM), llavors el mètode de la trucada és responsable de gestionar aquesta excepció.
Java llança exemples
Exemple 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'>);> >}> }> |
>
>
Sortida
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Explicació
Al programa anterior, estem rebent un error de temps de compilació perquè hi ha una possibilitat d'excepció si el fil principal s'atura, altres fils tenen l'oportunitat d'executar el mètode main() que provocarà InterruptedException.
Exemple 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'>);> >}> }> |
>
>
Sortida
Hello Geeks>
Explicació
Al programa anterior, utilitzant la paraula clau throws vam gestionar l'InterruptedException i obtindrem la sortida com Hola Geeks
Exemple 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.'>);> >}> >}> }> |
>
>
Sortida
Inside fun(). caught in main.>
Punts importants a recordar sobre la paraula clau llançada
- La paraula clau throws només és necessària per a les excepcions marcades i l'ús de la paraula clau throws per a les excepcions no marcades no té sentit.
- La paraula clau throws només es requereix per convèncer el compilador i l'ús de la paraula clau throws no impedeix la terminació anormal del programa.
- Amb l'ajuda de la paraula clau throws, podem proporcionar informació a la persona que truca del mètode sobre l'excepció.