Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma aplicação desktop que se comunica com um banco de dados do MySQL. Estava fazendo uns testes na minha aplicação e tive a idéia de eliminar minha conexão durante a execução do programa. Enquanto o programa estava rodando eu abri o prompt do MySQL e executei um kill connection id. Como era de se esperar uma exceção foi disparada pela minha aplicação. O problema é que eu não sei como prever essa situação. A excessão disparada é a "java.net.SocketException". Eu já pensei em verificar se o objeto Connection estava fechado com o método Connectio.isClosed(), mas o método retorna false porque a conexão não foi fechada na aplicação, e sim pelo programa externo. Não consigo utilizar um tratamento de excessão do tipo SocketException pois os métodos do ResultSet, Connection e PreparedStatement só aceitam java.sql.SQLException.
Se alguém tiver uma idéia eu agradeço.
Faz o tratamento pela Exceção mais Genérica, ou seja Exception.
Faz o tratamento pela Exceção mais Genérica, ou seja Exception.
Funciona, mas aí teria um problema. Se eu precisar capturar uma SQLException, não conseguirei. A minha idéia é fazer um tratamento específico para restaurar a conexão. Consegui solucionar o problema utilizando isso:
try {
} catch(com.mysql.jdbc.CommunicationsException ex) {
}
Quando dispara essa excessão eu sei que a falha foi no link (Socket).
Obrigado pela ajuda!
UP.
Tentei utilizar o comando autoreconnect=true na url do banco e também não funcionou.