/* Las sentencias try pueden estar implícitamente anidadas a través de llamadas a métodos. */ class MethNestTry { static void nesttry(int a) { try { // bloque try anidado /* Si se utiliza un argumento en la línea de órdenes, la siguiente sentencia efectúa división por cero */ if(a==1) a = a/(a-a); // división por zero /* Si se le pasan dos argumentos en la línea de órdenes, se sobrepasan los límites de la matriz */ if(a==2) { int c[] = { 1 }; c[42] = 99; // genera una excepción de fuera de límites } } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Indice fuera de limites: " + e); } } public static void main(String args[]) { try { int a = args.length; /* Si no hay ningún argumento en la línea de órdenes, la siguiente sentencia generará una excepción de división por cero */ int b = 42 / a; System.out.println("a = " + a); nesttry(a); } catch(ArithmeticException e) { System.out.println("División por 0: " + e); } } }