En Java, manejo de excepciones es uno de los medios eficaces para manejar los errores de tiempo de ejecución de modo que se pueda preservar el flujo normal de la aplicación. El manejo de excepciones de Java es un mecanismo para manejar errores de tiempo de ejecución como ClassNotFoundException, IOException, SQLException, RemoteException, etc.
En este artículo aprenderemos sobre throw y throws en Java que pueden manejar excepciones en Java.
lanzamiento de java
La palabra clave throw en Java se utiliza para lanzar explícitamente una excepción desde un método o cualquier bloque de código. Podemos tirar cualquiera excepción marcada o no marcada . La palabra clave throw se utiliza principalmente para generar excepciones personalizadas.
Sintaxis en lanzamiento de Java
throw Instance Example: throw new ArithmeticException('/ by zero');> Pero esta excepción, es decir, Instancia debe ser de tipo arrojable o una subclase de arrojable .
Por ejemplo , una excepción es una subclase de Throwable y las excepciones definidas por el usuario generalmente extienden la clase Exception. A diferencia de C++, los tipos de datos como int, char, floats o clases no arrojables no se pueden utilizar como excepciones.
El flujo de ejecución del programa se detiene inmediatamente después de que se ejecuta la instrucción throw y el adjunto más cercano intentar Se comprueba el bloque para ver si tiene un atrapar declaración que coincida con el tipo de excepción. Si encuentra una coincidencia, el control se transfiere a esa declaración; de lo contrario, se adjunta el siguiente intentar se marca el bloque, y así sucesivamente. Si no hay coincidencia atrapar se encuentra, el controlador de excepciones predeterminado detendrá el programa.
Ejemplos de lanzamiento de Java
Ejemplo 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.'>);> >}> >}> }> |
>
>
Producción
Caught inside fun(). Caught in main.>
Ejemplo 2
Java
// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }> |
>
>
Producción
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
lanzamientos de java
throws es una palabra clave en Java que se utiliza en la firma de un método para indicar que este método podría generar una de las excepciones de tipo enumeradas. La persona que llama a estos métodos tiene que manejar la excepción utilizando un bloque try-catch.
Sintaxis de lanzamientos 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 existe la posibilidad de generar una excepción, entonces el compilador siempre nos advierte sobre ello y obligatoriamente debemos manejar esa excepción marcada. De lo contrario, obtendremos un error en el tiempo de compilación que dice La excepción XXX no reportada debe ser detectada o declarada lanzada. . Para evitar este error en tiempo de compilación, podemos manejar la excepción de dos maneras:
- Usando try catch
- Al utilizar el lanza palabra clave
Podemos usar la palabra clave throws para delegar la responsabilidad del manejo de excepciones a la persona que llama (puede ser un método o JVM), luego el método de la persona que llama es responsable de manejar esa excepción.
Ejemplos de lanzamientos de Java
Ejemplo 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'>);> >}> }> |
>
int a carbón
>
Producción
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Explicación
En el programa anterior, obtenemos un error en tiempo de compilación porque existe la posibilidad de que se produzca una excepción si el subproceso principal va a suspenderse, otros subprocesos tienen la oportunidad de ejecutar el método main(), lo que provocará una InterruptedException.
Ejemplo 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'>);> >}> }> |
>
>
Producción
Hello Geeks>
Explicación
En el programa anterior, al usar la palabra clave throws manejamos la InterruptedException y obtendremos el resultado como Hola frikis
Ejemplo 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.'>);> >}> >}> }> |
>
>
Producción
Inside fun(). caught in main.>
Puntos importantes a recordar sobre los lanzamientos
- La palabra clave throws solo se requiere para excepciones marcadas y el uso de la palabra clave throws para excepciones no marcadas no tiene sentido.
- La palabra clave throws solo se requiere para convencer al compilador y el uso de la palabra clave throws no evita la terminación anormal del programa.
- Con la ayuda de la palabra clave throws, podemos proporcionar información a la persona que llama al método sobre la excepción.