pregunta
Hoy me encontré con un problema. En el siguiente código, cuando se lanza una excepción de tiempo de ejecución, ¿aún se ejecutará el código posterior? ¿Necesito agregar una declaración return después de la excepción?
public void add (int index, e elemento) {if (size> = elements.length) {throw new runtimeException ("La tabla de pedidos está llena, no se puede agregar"); //devolver; // ¿es necesario? } ....}
Para responder a esta pregunta, escribí algunas piezas de código para probarlo, y los resultados son los siguientes:
// código 1Public static void test () lanza la excepción {tirar nueva excepción ("parámetro fuera de los límites"); System.out.println ("después de la excepción"); // Error de compilación, "Declaración inaccesible"} // código 2try {tirar nueva excepción ("parámetro fuera de los límites"); } catch (Exception e) {E.PrintStackTrace ();} System.out.println ("After Exception"); // se puede ejecutar // Código 3IF (True) {Throw New Exception ("Parámetro fuera de los límites"); } System.out.println ("después de la excepción"); // se lanza la excepción, no se ejecutaráResumir:
Si se lanza una excepción antes de que un código y la excepción no se atraiga, este pedazo de código generará un error en tiempo de compilación "Declaración inaccesible". Como código 1
Si se lanza una excepción antes de un código de código, y esta excepción se ve atrapada por try...catch , si no se lanza una nueva excepción en la declaración catch en este momento, el código se puede ejecutar, de lo contrario, lo mismo que el Artículo 1. Al igual que el Código 2
Si se lanza una excepción en una declaración condicional, el programa se puede compilar, pero las declaraciones posteriores no se ejecutarán. Como código 3
También resume la diferencia entre la excepción de tiempo de ejecución y la excepción de no rune:
Las excepciones de tiempo de ejecución son excepciones de RuntimeException y sus subclases, y son excepciones no verificadas, como NullPointerException , IndexOutOfBoundsException , etc. Dado que tales excepciones son excepciones del sistema y no pueden manejarse, como problemas de red;
O es un error lógico del programa, como una excepción de puntero nulo; El JVM debe dejar de ejecutar para corregir este error, por lo que la excepción de tiempo de ejecución se puede manejar sin procesar (atrapar o vomitar, por supuesto, también se puede manejar) y el JVM lo maneja en sí mismo. Java Runtime catch automáticamente RuntimeException del throw del programa, luego detenga el hilo e imprima la excepción.
Las excepciones que no son de enrutamiento son excepciones distintas de RuntimeException . Todos pertenecen a Exception y sus subclases en tipo, y son excepciones verificadas. Se deben procesar las excepciones que no sean de run tiempos (capturar o vomitar) y, si no se procesa, el programa tendrá un error de compilación. En términos generales, Exception escrita en la API que throws no es RuntimeException .
Excepciones comunes de tiempo de ejecución:
Excepciones comunes que no son de rune:
De acuerdo, lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.