Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

Try-Catch: no ejecuta todo el programa cuando lo muevo del metodo2 al metodo1

Entre los ejercicios que pide realicemos después de ver los videos, está el de ir moviendo/subiendo el try-catch de un metodo a otro hasta llegar a posicionarlo en el main. El problema es que cuando lo subo al metodo1 corro el programa, ejecuta por primera vez el bucle for imprimiendo el número 1 y vuelve al metedo1 para imprimir el mensaje de "ArithmeticException", paso siguiente imprime "Fin metodo1", luego "Fin main" y sale de la ejecución del programa sin volver a repetir el bucle for del metodo2. ¿Es normal eso o estoy haciendo algo mal?

4 respuestas

Hola, te recomiendo que adjuntes el codigo tambien para poder entender mejor el problema que tienes

Hola Jose lo mas seguro que los mensajes "Fin del metodo 1" y "Fin main" los dejaste dentro de la sentencia try; a mi tambien me paso xDD pero si no es eso comparte el codigo para poder ayudarte mejor Saludos!

Hola, gracias por la respuesta a los dos. Creo es lo correcto lo que está pasando igual pero más tarder comparto la captura del código y la pila de ejecución.

No he estado poniendo el "fin metodo 1" ni el "fin main" dentro del try-catch pero lo voy a revisar por las dudas porque todo es posible en esto de estar aprendiendo algo nuevo jaja

  1. `
  2. public class flujo {
  3. public static void main(String[] args) {
  4. System.out.println("Ini do main");
  5. metodo1();
  6. System.out.println("Fim do main");
  7. }
  8. public static void metodo1(){
  9. System.out.println("Ini do metodo1");
  10. metodo2();
  11. System.out.println("Fim do metodo1");
  12. }
  13. public static void metodo2(){
  14. System.out.println("Ini do metodo2");
  15. for(int i = 1; i <= 5; i++) {
  16. System.out.println(i);
  17. cuenta c = null;
  18. c.depositar();
  19. }
  20. try {
  21. metodo1();
  22. } catch(ArithmeticException | NullPointerException ex) {
  23. String msg = ex.getMessage();
  24. System.out.println("error de null");
  25. System.out.println("Exception " + msg);
  26. ex.printStackTrace();
  27. }
  28. System.out.println("Fim do metodo2");
  29. }
  30. }
  31. `

Me sale este error :

Ini do main
Ini do metodo1
Ini do metodo2
1
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java_ejecucion.cuenta.depositar()" because "c" is null
    at java_pila_ejecucion/java_ejecucion.flujo.metodo2(flujo.java:20)
    at java_pila_ejecucion/java_ejecucion.flujo.metodo1(flujo.java:12)
    at java_pila_ejecucion/java_ejecucion.flujo.main(flujo.java:7)

ya lo solucione :

public class flujo {




          public static void main(String[] args) {


            System.out.println("Ini do main");

            try {
                   metodo1();
            } catch(ArithmeticException | NullPointerException ex) {
                    String msg = ex.getMessage();
                    System.out.println("error de null");
                    System.out.println("Exception " + msg);
                    ex.printStackTrace();
            }

            System.out.println("Fim do main");
          }
          public static void metodo1(){
            System.out.println("Ini do metodo1");
            metodo2();
            System.out.println("Fim do metodo1");
          }

        public static void metodo2(){
            System.out.println("Ini do metodo2");
            for(int i = 1; i <= 5; i++) {
                System.out.println(i);
                cuenta c = null;
                c.depositar();

        }




            System.out.println("Fim do metodo2");

        }
    }

consola :

Ini do main
Ini do metodo1
Ini do metodo2
1
error de null
Exception Cannot invoke "java_ejecucion.cuenta.depositar()" because "c" is null
java.lang.NullPointerException: Cannot invoke "java_ejecucion.cuenta.depositar()" because "c" is null
    at java_pila_ejecucion/java_ejecucion.flujo.metodo2(flujo.java:35)
    at java_pila_ejecucion/java_ejecucion.flujo.metodo1(flujo.java:26)
    at java_pila_ejecucion/java_ejecucion.flujo.main(flujo.java:14)
Fim do main

Espero le funcione a alguien