Programa não esta tratando chave duplicada

Eu estou desenvolvendo uma aplicação utilizando MySQL, possuo uma classe que é a interação da tabela “clientes” com o resto da aplicação. Esta classe tem por principal responsabilidade inserir dados no banco e ler os mesmos. Eu tinha feito um método responsável pela inserção dos dados, com um código mais ou menos assim:

private static final String CHAVE_DUPLICADA = "23000";

try {
  Statement statement = ConexaoBaseDeDados.getConnection();
  statement.executeUpdate(query);
  statement.close();
} catch (SQLException ex) {
  if (ex.getSQLState().equals(CHAVE_DUPLICADA)
    System.out.println("Chave duplicada!");
  else System.out.println("Problema na conexão com o banco!");
}

Até aí tudo bem, tudo funcionava normal, ele avisava quando a chave estava duplicada sem problemas, mas de uma hora para outra começou a disparar a seguinte excessão: ExceptionInInitializerError, e aponta como erro a linha statement.executeQuery(query); O estranho é que quando a chave não está duplicada os dados são inseridos no banco de dados sem nenhum problema!

O que pode estar acontecendo?

Olá,

Na referência, você encotnra uma boa dica de comod ebugar essa aplicação:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ExceptionInInitializerError.html

Mas minha real sugestão é NUNCA fazer checagem por chave duplicada. Quem gerencia as chaves, seja sua aplicação ou o banco, deve assegurar (jurar de pé junto) que as chaves não são duplicadas.

O problema, ao meu ver,e stá no componente que permite chaves duplicadas.

[]s