Questão de Java - JDBC e Tratamento de Exceções
A questão aborda o tratamento de exceções no uso da API JDBC (Java Database Connectivity) para conectar aplicações Java a bancos de dados MySQL. Vamos analisar cada linha de código para identificar os riscos de exceção correspondentes.
Análise do Código
O trecho de código apresenta duas operações críticas:
- Carregamento do Driver:
Class.forName("com.mysql.jdbc.Driver");
Este comando instrui a JVM a carregar a classe do driver MySQL dinamicamente. Para isso, a máquina virtual deve encontrar essa classe no classpath.
- Estabelecimento da Conexão:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3307/b", "r", "p");
Este comando tenta abrir uma conexão física com o banco de dados utilizando as credenciais fornecidas (URL, usuário "r" e senha "p").
Detalhamento das Exceções
Para identificar a resposta correta, devemos verificar quais exceções são declaradas ou levantadas nativamente por esses métodos:
- Linha 1 (
Class.forName): - Se a classe especificada ("com.mysql.jdbc.Driver") não estiver disponível no classpath da aplicação, o método lança uma
ClassNotFoundException. Esta é uma exceção verificada (checked exception) obrigatória de ser tratada ou declarada. - Linha 2 (
DriverManager.getConnection): - Qualquer erro durante o processo de conexão (como servidor inacessível, porta incorreta, usuário/senha inválidos ou configuração de URL ruim) resulta no lançamento de uma
SQLException. Também é uma exceção verificada.
Comparativo com as Alternativas
| Método | Risco Principal | Exceção Lançada |
|---|
Class.forName() | Classe não encontrada no classpath | ClassNotFoundException |
DriverManager.getConnection() | Erro de comunicação/credencial | SQLException |
Analisando as opções:
- A:
InterruptedException ocorre em threads bloqueadas; NullPointerException ocorre ao acessar objetos nulos. Não são as exceções primárias destas chamadas. - B:
IOException é muito genérico; IllegalArgumentException é para parâmetros inválidos, mas o JDBC usa SQLException para erros de SQL/conexão. - C: Corresponde exatamente à análise acima.
- D:
InterruptedException não se aplica à chamada Class.forName.
Conclusão
As exceções que podem ocorrer, respectivamente, na tentativa de carregar o driver e na tentativa de conectar ao banco de dados, são ClassNotFoundException e SQLException.
Alternativa C