Quando usar catch e quando usar throws no tratamento de exceções
A questão não é sobre sintaxe de manipulação de exceção, mas é sobre o local certo para escrever o bloco catch para uma exceção em sua jornada sobre os métodos através da propagação.
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;
}
Presumirmethod1()
chamadomethod2()
emethod2()
chamado método acima. No método acima, se eu manipular a exceção, tenho que retornar um valor. Vamos supor que eu volteifalse
após o bloco de captura,method2()
entende mal como o nome de usuário ou senha está errado.
Se eu não estou lidando,method2()
não receberá nenhum valor e seu bloco catch será executado e o mesmo problema ocorreria emmethod1()
.
Agora você pode definir onde posso lidar efetivamente com a exceção?