Requisitos previos: manejo de excepciones , flujo de control en try-catch-finally
1) ¿Cuál es el resultado del siguiente programa?
public class Test { public static void main(String[] args) { try { System.out.printf("1"); int sum = 9 / 0; System.out.printf("2"); } catch(ArithmeticException e) { System.out.printf("3"); } catch(Exception e) { System.out.printf("4"); } finally { System.out.printf("5"); } } }
a) 1325
b) 1345
c) 1342
d) 135
Respuesta (d)
Explicación: una vez que se produce una excepción en el bloque de prueba, la ejecución pasa a la declaración de captura correspondiente y no vuelve al bloque de prueba. Solo uno de los bloques catch se ejecuta a la vez. finalmente, el bloque siempre se ejecuta independientemente de si se produjo o no la excepción.
2) ¿Cuál es la salida del siguiente programa?
public class Test { private void m1() { m2(); System.out.printf("1"); } private void m2() { m3(); System.out.printf("2"); } private void m3() { System.out.printf("3"); try { int sum = 4/0; System.out.printf("4"); } catch(ArithmeticException e) { System.out.printf("5"); } System.out.printf("7"); } public static void main(String[] args) { Test obj = new Test(); obj.m1(); } }
a) 35721
b) 354721
c) 3521
d) 35
Resp. (a)
Explicación: Si se maneja una excepción en la sentencia catch, el programa continúa con su ejecución normal, luego de ejecutar la sentencia catch correspondiente a esa excepción. Además, cuando ocurre una excepción en el bloque de prueba, el resto del programa en el bloque de prueba no se ejecuta.
3) ¿Cuál es la salida del siguiente programa?
public class Test { public static void main(String[] args) { try { System.out.printf("1"); int data = 5 / 0; } catch(ArithmeticException e) { System.out.printf("2"); System.exit(0); } finally { System.out.printf("3"); } System.out.printf("4"); } }
a) 12
b) 1234
c) 124
d) 123
Respuesta (a)
Explicación: el único caso en el que el código dentro del bloque finalmente no se ejecuta es cuando System.exit(0) se llama explícitamente en el programa. Luego se llama a la declaración de salida y el programa finaliza sin ejecutar más.
4) ¿Cuál es la salida del siguiente programa?
public class Test { public static void main(String[] args) { try { System.out.printf("1"); int data = 5 / 0; } catch(ArithmeticException e) { Throwable obj = new Throwable("Sample"); try { throw obj; } catch (Throwable e1) { System.out.printf("8"); } } finally { System.out.printf("3"); } System.out.printf("4"); } }
a) Error de compilación
b) Error de ejecución
c) 1834
d) 134
Respuesta (c)
Explicación: Se pueden lanzar excepciones en la cláusula catch. Esto se hace para cambiar el tipo de excepción en tiempo de ejecución. Las excepciones en la cláusula catch se lanzan al crear instancias de la clase Throwable como se muestra en el programa.
5) ¿Cuál es la salida del siguiente programa?
import java.io.EOFException; import java.io.IOException; public class Test { public static void main(String[] args) { try { System.out.printf("1"); int value = 10 / 0; throw new IOException(); } catch(EOFException e) { System.out.printf("2"); } catch(ArithmeticException e) { System.out.printf("3"); } catch(NullPointerException e) { System.out.printf("4"); } catch(IOException e) { System.out.printf("5"); } catch(Exception e) { System.out.printf("6"); } } }
a) 1346
b) 136726
c) 136
d) 13
Res. (d)
Explicación: En declaraciones de capturas múltiples, las excepciones deben enumerarse de más específicas a más generales. Solo se ejecuta una instrucción catch que es más específica para la excepción ocurrida.
Este artículo es una contribución de Mayank Kumar . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA