Cuándo usar catch y cuándo usar throws en el manejo de excepciones

La pregunta no es sobre la sintaxis de manejo de excepciones, pero se trata de cuál es el lugar correcto para escribir el bloque catch para una excepción en su viaje sobre los métodos a través de la propagación.

public boolean validateUser(String username, String password) throws SQLException {
    Connection conn = dataSource.getConnection();
    boolean result = false;
    PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM USERS WHERE   USERNAME=? AND PASSWORD=?");
    pstmt.setString(1, username);
    pstmt.setString(2, password);
    result = pstmt.executeQuery().next();
    conn.close();
    return result;
}

Asumirmethod1() llamadomethod2() ymethod2() llamado método anterior. En el método anterior, si manejo la excepción, tengo que devolver un valor. Asumamos que he regresadofalse después del bloqueo,method2() malinterpreta que el nombre de usuario o la contraseña son incorrectos.

Si no estoy manejando,method2() no recibirá ningún valor y su bloque catch se ejecutará y el mismo problema ocurriría enmethod1().

¿Ahora puede definir dónde puedo manejar efectivamente la excepción?

Respuestas a la pregunta(4)

Su respuesta a la pregunta