Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Ubicar el lanzamiento de la excepción en el constructor, no ayuda para nada...

Cordial saludo. Al parecer el ubicar el lanzamiento de la excepción en el constructor de la clase Conexion, no es de ninguna utilidad, porque al utilizar tanto el try-catch-finally como el try con recursos, solo es posible que la conexión se cierre cuando ese lanzamiento se ejecuta desde el método leerDatos( ). Cuando el lanzamiento de esa excepción se ejecuta desde el constructor, no es posible que la conexión se pueda cerrar, si utilizamos ambas opciones: el try normal y el try con recursos. Entonces según lo que pude entender, se debe dejar que el lanzamiento se ejecute 'siempre', desde el método leerDatos( ) y no desde el constructor.

2 respuestas

Hola Orlando espero que estes bien.

En general, es una buena práctica lanzar excepciones en el momento en que se produce el error. En el caso de la clase "Conexion", si se lanza una excepción desde el constructor, esto significa que la conexión no se pudo establecer correctamente y no es seguro continuar utilizando esa instancia de la clase. En este caso, es importante que la excepción se lance de manera que el cliente que está utilizando la clase sepa que la conexión no se pudo establecer correctamente.

Sin embargo, como mencionas, si el lanzamiento de la excepción se produce en el constructor y se utiliza un bloque try-catch o un bloque try-con-recursos en el método que utiliza la clase "Conexion", puede haber problemas para cerrar la conexión. Esto se debe a que la conexión no se estableció correctamente en el constructor, por lo que el objeto de conexión no se creó y, por lo tanto, no puede cerrarse.

En general, es una buena práctica cerrar cualquier recurso que se haya utilizado en un bloque try-catch-finally o en un bloque try-con-recursos. En el caso de la clase "Conexion", es posible lanzar la excepción en el constructor y luego capturarla y cerrar la conexión en el método que utiliza la clase. También es posible lanzar la excepción directamente desde el método que establece la conexión, en lugar de desde el constructor.

En resumen, la decisión de dónde lanzar la excepción depende de cómo se esté utilizando la clase y de qué tan importante sea cerrar la conexión correctamente en caso de un error. En general, es importante cerrar cualquier recurso que se haya utilizado en un bloque try-catch-finally o en un bloque try-con-recursos, para garantizar que no se produzcan fugas de recursos.

¡Un saludo!

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

Hola Génesys muy agradecido por tu respuesta y deseando que también te encuentres muy bien. Creo que este tema puede quedar muy claro cuando se pueda implementar en otros ejemplos más reales y se pueda comprender mejor 'como decidir' el lugar para lanzar la excepción, de acuerdo a los resultados que se van obteniendo, porque con un solo ejemplo como el que realizó el instructor no se alcanzan a percibir esas importancias que tú mencionas al final de tu respuesta. Felicidades...