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!