Gráfica comparativa
Bases de comparación | lanzar | arroja |
---|---|---|
BASIC | La palabra clave throw entrega nuestro objeto de excepción creado a JVM manualmente. | La palabra clave throws se utiliza para delegar la responsabilidad del manejo de excepciones a la persona que llama del método. |
Sintaxis | lanzar Throwable-instance; | return_type method_name (lista de parámetros) lanza ExceptionClass_list { // cuerpo de método } |
Seguido por | A la palabra clave throw le sigue un objeto de excepción. | La palabra clave throws va seguida de la lista de las clases de excepción que pueden ocurrir en el método. |
Número de Excepciones lanzadas | La palabra clave throw puede lanzar una única instancia de excepción. | La palabra clave throws puede declarar varias clases de excepción separadas por una coma. |
Definición de tiro
La palabra clave " lanzar " se usa para entregar nuestra instancia de excepción creada a la JVM (Java Virtual Machine) manualmente. Si "lanzar" no se usa para lanzar una instancia de excepción y la excepción ocurre, entonces el sistema de tiempo de ejecución lanza internamente la instancia de excepción a JVM y el programa termina de forma anormal. La forma general de la palabra clave throw es:
lanzar Throwable_instance;
Por encima de Throwable_instance debe ser un objeto de la clase Throwable. Los tipos primitivos, como int, float o char, y la instancia de clase que no se puede lanzar no se pueden lanzar con la palabra clave throw.
Tomemos un ejemplo para entender la palabra clave lanzar.
Prueba de clase {Public static void main (String [] args) {arroja una nueva ArithmeticException ("/ by zero"); }}
En el código anterior, el lanzamiento de la palabra clave lanza una instancia de la clase de excepción "ArithmeticException". Si no se hubiera utilizado la palabra clave throw, el método main () habría creado internamente un objeto de excepción entregado a la JVM.
Los puntos a recordar sobre el lanzamiento de la palabra clave:
- Se entrega el objeto de excepción manualmente a la JVM.
- Se utiliza mejor para las excepciones definidas por el usuario o las excepciones personalizadas.
- Si la memoria no está asignada al objeto de excepción lanzado por palabra clave lanzada, entonces ocurre una excepción de tiempo de ejecución, NullPointerException.
- La palabra clave throw detiene la ejecución del programa inmediatamente después de su aparición. No podemos escribir directamente ninguna declaración después de la declaración de lanzamiento. Si escribimos cualquier mensaje directamente después de lanzar la declaración, el compilador mostrará un error, declaración inaccesible durante la compilación.
- Solo los objetos de la clase Throwable pueden lanzarse usando la palabra clave throw. Si el objeto lanzado no es un objeto de la clase Throwable, obtenemos un error de tiempo de compilación "Se encontró un tipo incompatible. . requerido java.lang.Throwable "
Nota:
La palabra clave throw se utiliza en C ++, JAVA, C #, para lanzar manualmente una excepción.
Definición de tiros
La palabra clave " lanzar " se usa para delegar la responsabilidad de manejar la excepción ocurrida en el método, a su método de llamada. El método que llama es responsable de manejar la excepción, ya que puede ser cualquier otro método o JVM. Declara la lista de las clases de excepción que pueden ocurrir en el método.
El uso de la palabra clave throws convence al compilador de que la excepción ocurrida en el método debe ser manejada por el método del que llama, por lo tanto, no se produce ningún error de compilación. Pero, el método que llama debe manejar la excepción o delegar la responsabilidad de manejar la excepción a su método de jerarquía. Cuando se produce la excepción de tiempo de ejecución, incluso después del uso de la palabra clave throws, no evita la terminación anormal del programa. Si el método del llamante es main (), la JVM predeterminada maneja la excepción.
La forma general de la palabra clave throws es:
return_type method_name (lista de parámetros) lanza exceptionClass_list {// body of method}
Podemos ver que la palabra clave throws aparece después de la firma del método y puede contener la lista de clases de excepción que pueden aparecer en el método. La lista de las clases de excepción escritas después de los lanzamientos de palabras clave está separada por una coma.
Tomemos un ejemplo para entender la palabra clave arroja.
calss Test {public static void main (String [] args) lanza InterruptedException {thread sleep (10000); }}
En el código anterior, el hilo principal está hecho para dormir durante algún tiempo usando el método sleep (). Ahora, cuando el método principal está en suspensión, es posible que los otros subprocesos puedan interrumpir el subproceso principal. Pero, la palabra clave throws se usa después de la firma del método main (), por lo que el programa se compilaría fácilmente. La palabra clave throws está declarando la clase de excepción verificada InterruptedException. Ahora, si cualquier otro hilo interrumpe el hilo principal durante el tiempo de ejecución, la palabra clave throws entregaría esa excepción al llamador del método main (), que es JVM. La JVM terminaría el programa de manera anormal.
Los puntos a recordar sobre los lanzamientos de palabras clave:
- La palabra clave throws solo se utiliza para declarar las clases de excepción marcadas. El uso de la palabra clave throws para una excepción no marcada no tiene impacto.
- Si el método no quiere manejar la excepción por sí solo, delega esa excepción al método de llamada de esa clase usando la palabra clave throws.
- Su uso solo permite una compilación fluida del programa.
- Si se produce una excepción en el tiempo de ejecución, el programa termina de forma anormal, incluso después del uso de la palabra clave throws.
- Se recomienda usar el bloque try / catch para la terminación normal del programa si se produce una excepción en el tiempo de ejecución.
Nota:
La palabra clave se utiliza solo en Java. C ++ y C # no usan la palabra clave throws.
Diferencias clave entre lanzamientos y lanzamientos
- La palabra clave lanzada, entrega la responsabilidad del manejo de excepciones a JVM manualmente, mientras que, la palabra clave lanza, entrega la responsabilidad del manejo de excepciones al método de llamada del código donde se produjo una excepción.
- A la palabra clave throw le sigue el objeto de excepción que entrega a la JVM. Por otro lado, la palabra clave throws está seguida por las clases de excepción que pueden ocurrir en el método.
- La palabra clave throw puede lanzar un solo objeto de excepción a la vez, mientras que la palabra clave throws puede declarar varias clases de excepción separadas por una coma a la vez.
Conclusión:
La palabra clave throw se utiliza mejor para la excepción personalizada. El bloque try / catch es el mejor para manejar las excepciones como palabra clave de lanzamientos comparados.