Para capturar uma SQLException específica, você precisa comparar com o estado SQL usando
getSQLState()
método. Ex:SQL State 23 para violação de integridade de dados. catch (SQLException ex) {
if (ex.getSQLState().startsWith("23")) {
JOptionPane.showMessageDialog(null, "Duplicate");
}
}
Encontrado aqui