Questão nº 36

Questão de Java SE · FCC TRE-PR 2017 (nº 36)

FCC2017Analista Judiciário - Área Apoio Especializado - Especialidade Análise de SistemasJava SE
Gabarito: Aver comentário ↓

Considere o fragmento de código abaixo, retirado de uma classe de acesso a dados em uma aplicação que utiliza Java Database Connectivity − JDBC e Java 8.

String url="jdbc:mysql://localhost:3306/empresa";
String sql = "insert into cliente(id, nome) values (?, ?)";
Connection conn;
try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(url, "root", "h3$c7Ab");
    PreparedStatement st = conn.prepareStatement(sql);
    st.setInt(1, 10);
    st.setString(2, "Marco Antonio");
    st.setString(3, "(11)5678-9087");
    st.executeUpdate();
    JOptionPane.showMessageDialog(null, "Os dados do cliente foram salvos");
    conn.close();
} catch (......

I

 ex) {
    JOptionPane.showMessageDialog(null, "Erro ao conectar com o Banco de Dados");
}

Para tratar corretamente as exceções que podem ser lançadas no bloco try{}, a lacuna I deve ser preenchida com

Resposta comentada

Gabarito Alternativa A

Em Java, exceções verificadas (checked exceptions) são erros que o compilador exige que você trate explicitamente, seja com um bloco try-catch ou declarando-as no método. As operações de JDBC (Java Database Connectivity) lançam exceções verificadas para indicar problemas na conexão ou interação com o banco de dados.

  • (A) Correta: A alternativa ClassNotFoundException | SQLException é a correta porque cobre as duas principais exceções verificadas que podem ser lançadas no bloco try fornecido:

    • ClassNotFoundException: É lançada pela linha Class.forName("com.mysql.jdbc.Driver"); se a classe do driver JDBC (neste caso, o driver MySQL) não for encontrada no classpath da aplicação.
    • SQLException: É a exceção base para quase todas as operações JDBC relacionadas à interação com o banco de dados. Ela pode ser lançada por DriverManager.getConnection(), conn.prepareStatement(), st.setInt(), st.setString(), st.executeUpdate(), e conn.close() em caso de erros de conexão, SQL inválido, problemas de permissão, violação de restrições, ou qualquer outro problema de banco de dados. A linha st.setString(3, "(11)5678-9087"); é um exemplo de erro que causaria uma SQLException em tempo de execução, pois o SQL tem apenas dois placeholders (?).
  • (B) Incorreta: DriverException e MySQLException não são classes de exceção padrão do pacote java.sql ou do Java em geral. A API JDBC utiliza SQLException para erros relacionados a drivers e bancos de dados.

  • (C) Incorreta: JDBCException não é uma classe de exceção padrão do pacote java.sql. A exceção principal para erros JDBC é SQLException.

  • (D) Incorreta: JDBCException não existe como uma exceção padrão da API JDBC. A exceção correta para problemas de banco de dados é SQLException.

  • (E) Incorreta: DriverException não é uma classe de exceção padrão. Além disso, esta alternativa não inclui ClassNotFoundException, que é essencial para tratar o carregamento do driver.

Fonte: FCC TRE-PR 2017 Analista Judiciário - Área Apoio Especializado - Especialidade Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho