Java Throw: Lanzamiento de excepción
El programa puede usar la declaración de lanzamiento para lanzar excepciones claras. La forma habitual de una declaración de lanzamiento es la siguiente:
lanzar tirando en la instancia;
Aquí, la inversión de lanzamiento debe ser un objeto del tipo de clase lanzable o el tipo de subclase lanzable. Los tipos simples, como Int o Char, y las clases no tortuables, como la cadena u objeto, no pueden usarse como excepciones. Hay dos formas de obtener objetos lanzables: use parámetros en la cláusula de captura o cree con el nuevo operador.
La ejecución del programa se detiene inmediatamente después de la declaración de lanzamiento; El bloque de try más cerrado se usa para verificar si contiene una declaración de captura que coincide con el tipo de excepción. Si se encuentra un bloque coincidente, el control gira a la declaración; Si no se encuentra un bloque de captura coincidente, el controlador de excepción predeterminado interrumpe la ejecución del programa e imprime el rastro de la pila.
El siguiente es un programa de ejemplo que crea y arroja excepciones.
// Demuestre Show.Class ThrowDemo {static void demoproc () {try {throw nullPointerException ("demo"); / / Rethrow La excepción}} public static void main (string args []) {try {demoproc (); El programa tiene dos oportunidades para manejar el mismo error. Primero, Main () establece una relación de excepción y luego llama a Demoproc (). El método DEMPROPR () luego establece otra relación de manejo de excepciones e inmediatamente lanza una nueva instancia de NullPointerException, que se captura en la siguiente línea. La excepción se arroja nuevamente. Aquí está el resultado de salida:
Atrapado dentro de Demoproc.recught: java.lang.nullpointerexception: demo
El programa también explica cómo crear objetos de excepción estándar en Java, prestando especial atención a la siguiente línea:
tirar nueva nullpointerException ("demo");
Aquí, se utiliza nuevo para construir una instancia de NullPointerException. Todas las excepciones de tiempo de ejecución de Java incorporadas tienen dos constructores: uno no tiene parámetros y uno tiene un parámetro de cadena. Cuando se usa el segundo formulario, el parámetro especifica la cadena que describe la excepción. Si el objeto se usa como un parámetro para imprimir () o println (), se muestra la cadena. Esto también se puede lograr llamando a getMessage (), que se define por Throwable.
Java lanza la cláusula <r /> Si un método puede causar una excepción pero no lo maneja, debe especificar este comportamiento para que la persona que llame del método pueda protegerse sin la excepción. Para hacer esto, puede incluir una cláusula de lanzamiento en la declaración del método. Una cláusula de lanza enumera todos los tipos de excepción que puede lanzar un método. Esto es necesario para todas las excepciones de los tipos, excepto el error o RuntimeException y sus subclases. Todos los demás tipos de excepciones que un método puede lanzar debe declararse en la cláusula de lanzamiento. No hacerlo dará como resultado un error de compilación.
Aquí hay una forma común de una declaración de método que contiene una cláusula de lanzamiento:
Tipo de método-name (Parameter-list) lanza Exception-List {// cuerpo de método}Aquí, Exception List es una lista de excepciones segmentada por comas que el método puede lanzar.
Aquí hay un ejemplo incorrecto. Este ejemplo intenta lanzar una excepción que no puede atrapar. Debido a que el programa no especifica una cláusula de lanzamiento para declarar el hecho, el programa no se compilará.
// Este programa contiene un error y no compilará. ClassDemo {static void throwone () {System.out.println ("Inside Throwone"); String args []) {throwone (); Para compilar el programa, se deben cambiar dos lugares. Primero, debe declarar ShoweNe () para plantear una excepción de acceso ilegal. En segundo lugar, Main () debe definir una declaración de prueba/captura para atrapar la excepción. Los ejemplos correctos son los siguientes:
// Esto ahora es correcto. ClassDemo {static void throwone () lanza ilegalAccessException {System.out.println ("Inside Throwone"); ) {try {throwone (); Aquí están los resultados de salida del ejemplo:
Inside throwonecaught java.lang.illegalaccessexception: demo