Eu estou dando a minha opinião mais experiência: nesse caso em especifico você tem controle total da aplicação e pode antes de inserir o registro, verificar se o mesmo já existe, não havendo necessidade de um lançar uma exceção, somente a mensagem!
Gosto de trabalhar com exceção quando eu não tenho controle ao código, um exemplo: uma requisição em um servidor remoto, seria lógico fazer com exceção …! Tem vários exemplos, mas, acredito que isso possa te ajudar!
vc precisa “mesmo” informar para o usuario q o q ele digitou já existe, vc pode fazer um Insert ignore na sua instrução sql assim o usuario pode ficar livre.
Outro ponto a observar, é que SQLException pode trazer qualquer tipo de erro (o banco pode ter parado por exemplo), ou seja, você teria que verificar no getMessage se encontra algo como unique para realmente confirmar que se trata de registro duplicado… isso dificulta a manutenção e força você incluir if’s dentro do catch… eu acho que não fica legal…
Lost entendi sua resposta e sei que de fato isso irá ocorrer.
Você sabe como tratar esta questão das duas colunas do tipo UNIQUE que tenho em minha tabela no banco de dados? Pois assim que o usuário tentar cadastrar algo que já exista no banco, “a unique entra em ação” e gera um erro ao Java. E como tratar esta exceção?
Eu não encontrei uma forma de pegar esta exceção do Banco e mostrar uma mensagem bacana ao usuário.
Cara, o mais comum é consultar o registro com select antes e dependendo da resposta você prosseque pegou?
É esse tipo de controle total que o @Dragoon comentou… na teoria qualquer exceção que acontecer não será por causa de duplicidade (afinal você já testou antes certo?) e você não precisa tratar…
A mensagem pro usuário pode ser esse JOptionPane mesmo, a diferença é que ele vai antes de executar o insert…