Origen de las excepciones éstas. Existen dos categorías básicas: · Excepciones de la JVM. la Java Virtual Machine. · Excepciones programáticas. excplícitamente por la aplicación y/o APIs particulares del desarrollador. 1. Excepciones lanzadas por la JVM ejemplo: class NPE { static String s; public static void main(String[] args) { System.out.println(s.length()); cuando trate de invocar al método length() Ejemplo: void go() { // Aplicación errada de recursividad go(); sólo la JVM ocurre este momento y la JVM será la fuente de este error. 2. Excepciones lanzadas programáticamente numéricos primitivos. contexto: int parseInt(String s) throws NumberFormatException { boolean parseSuccess = false; int result = 0; // se implementa la lógica de la conversion if (!parseSuccess) // si la conversion falló throw new NumberFormatException(); return result; IllegalArgumentException. caen dentro de la categoría de excepciones generadas programáticamente. Resumen de excepciones y yerros comunes generados por una aplicación java. Descripción y Fuentes de Excepciones comunes Excepción Descripción Lanzada generalmente por: ArrayIndexOutOfBoundsException Lanzada cuando se intenta alcanzar a un arreglo con un valor de índice inválido (sea éste negativo o sobresaliente a la extensión del arreglo) JVMClassCastException Lanzada cuando intentamos convertir una referencia a variable a un tipo que falla la prueba de casteo IS-A JVMIllegalArgumentException Lanzada cuando un método recibe un argumento formateado de forma distinto a lo que el método esperaba. Programáticamente IllegalStateException Lanzada cuando el estado del ámbito no coincide con la operación que se intenta ejecutar. Por ejemplo, usar un objeto de la clase Scanner que ha sido cerrado previamente. Programáticamente NullPointerException Lanzada cuando intentamos alcanzar a un objeto con una variable de referencia cuyo valor actual es null JVMNumberFormatException Lanzada cuando un método que convierte un String a un número recibe un String que no puede ser convertido. Programáticament AssertionError Lanzada cuando una sentencia Boolean retorna el valor falso después de ser evaluada. Programáticament ExceptionInInitializerError Lanzada cuando intentamos inicializar una variable estática o un bloque de inicialización JVMStackOverflowError Típicamente lanzada cuando un método es invocado demasiadas veces, por ejemplo, recursivamente JVMNoClassDefFoundError Lanzada cuando la JVM no puede colocar una clase que necesita, por un yerro de línea de comando, dificultades de classpath, o un archivo class perdido JVMEjercicios de aplicación: 1. Dado la próximo clase: class Circus { public static void main(String[] args) { int x = 9; int y = 6; for(int z = 0; z 6; z++, y--) { if(x > 2) x--; label: if(x > 5) { System.out.print(x + ; --X; continue label; X--; ¿Cuál será el fruto de su ejecución a) 8b) 8 7 c) 8 7 6 d) Compilation fails. e) An exception is thrown at runtime. Respuesta: 2. Dada la próximo clase class Mineral { class Gem extends Mineral { class Miner { static int x = 7; static String s = null; public static void getWeight(Mineral m) { int y = 0 / x; System.out.print(s + ); public static void main(String[] args) { Mineral[] ma = { new Mineral(), new Gem() ; for (Object o : ma) getWeight((Mineral) o); java Miner.java ¿Cuál será el fruto de su ejecución? a) null b) null null c) A ClassCastException is thrown. d) A NullPointerException is thrown. e) A NoClassDefFoundError is thrown. f) An ArithmeticException is thrown. ) An IllegalArgumentException is thrown. h) An ArrayIndexOutOfBoundsException is thrown null null