Como posso fazer o tratamento dessa excessão no try catch para colocar uma mensagem para o usuário que o registro ja existe
Tratamento de excessão chave unique no bd
4 Respostas
Faça um try/catch pegando a exception que o db está lançando.
O q eu mais vejo sendo usado é a verificação antes de persistir os dados, principalmente porque não é lançado uma exceção específica para este tipo de erro, mas sim um SQLException.
A não ser é claro q vc faça este tipo de tratamento, mas aí vc teria outro tipo de problema, já que cada bando lançaria um código diferente de erro para o unique constraint.
Não há como saber exatamente do que se trata sua SQLException. Quer uma dica para esse problema ?
Faça uma busca na base de dados antes de chamar seu DAO, caso retorne algum registro, significa que estará repetindo e tu consegue lançar sua própria exceção e trata-la corretamente.
Quando se trata de SQLException, normalmente se é lançada um RuntimeException, justamente por não conhecer o motivo da exceção.
Pode ser duplicado, chave estrangeira, tabela inexistente, erro de syntax e etc.
Também faço dessa forma.