3
respuestas

[Duda] ¿Por qué usar THROWS EXCEPTION en el main?

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadNo entiendo el por que se usa el throws Exception, comprendo que es lo que hace pero el instructor comento en una clase pasada que eso es una mala practica en el main por que en este caso no es mala practica?

3 respuestas

¡Hola Dueñas!

El uso de throws Exception en el método main no es una mala práctica en sí misma, pero se debe tener en cuenta que es una forma de propagar excepciones hacia arriba en la pila de llamadas de métodos.

En el caso del método main, si se produce una excepción y no se maneja adecuadamente, el programa terminará abruptamente. Al agregar throws Exception al método main, se está indicando que cualquier excepción que se produzca en el método será propagada hacia arriba en la pila de llamadas de métodos, lo que significa que la excepción será manejada por el método que llamó al main (en este caso, el sistema operativo).

En resumen, el uso de throws Exception en el método main no es una mala práctica en sí misma, pero es importante tener en cuenta que esto puede hacer que las excepciones no sean manejadas adecuadamente y que el programa termine abruptamente.

¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Agradesco tu explicación, muchas gracias.

Hola,

El método close() lanza una excepción de tipo Exception que en un principio no está siendo manejada:

@Override
public void close() throws Exception {
    cerrar();
}

pero existen dos maneras de hacerlo:

1- try/catch:

public class TestConexion {

    public static void main(String[] args) {

        try (Conexion con = new Conexion()){
                con.leerDatos();
        }
        catch (Exception ex){
                System.out.println("Ejecutando catch");
                ex.printStackTracke();
        }

    }

}

2- Declarando throws en el método que lo está llamando, que en este caso sería el método main:

public class TestConexion {

    public static void main(String[] args) throws Exception {

        try (Conexion con = new Conexion()){
                con.leerDatos();
        }
        catch (IllegalStateException ex){
                System.out.println("Ejecutando catch");
                ex.printStackTracke();
        }

    }

}

esto último es lo que decide hacer el instructor, lo cual tengo entendido que si ocurriera dicha excepción el programa se terminaria abruptamente en ese momento.

Entonces las preguntas serían: ¿es con este objetivo que se declara throws en el método main, para que el programa se termine en caso que no se logre cerrar la conexión? y ¿es con este propósito que el método close() lanza una excepción?