PostgreSQL e SQLException.getErrorCode()

Pessoal, estou desenvolvendo um sistema com Java e PostreSQL e gostaria de fazer o seguinte: quando o usuário digitar um código inválido, ou tentar excluir um registro que é foreign key em outra tabela, é exibida uma mensagem de erro dizendo: “Esse código já existe” ou “Não é possível excluir tal registro por tais e tais motivos”.

A pergunta é: quando o banco dispara uma mensagem de erro, não dá pra usar outra coisa ao invés de avaliar cada SQLException.getMessage()?

Eu também gostaria de saber por que o getErrorCode sempre retorna o mesmo valor (7), não importanto que erro seja.

Grato pela atenção.

deixe eu ver se eu entendi sua duvida…

vc quer que quando uma excessao ocorre, imprima msgs que o usuario entenda, é isso?

Se for isso, vc pode estar fazendo.
ex:

try{...} catch(SQLException sqlex) { System.out.println("Erro..."); }

o que vc pode estar fazendo tb é criando sua propria exception tb…

Espero ter ajudado.

Abraços

É isso aí. Quero que o usuário entenda quando ocorre alguma exceção.

Só que eu quero saber QUAL é a exceção disparada pelo banco.

Se é violação de chave primária, ou chave estrangeira, ou unique key’s, ou qualquer coisa que o banco não permita que ocorra.

Eu posso mostrar ao usuário: System.err.println(SQLException.getMessage());

Mas o problema é que para ele apareceria o seguinte (por exemplo):

duplicate key violates unique constraint "pkbairro"

Isso é uma porcaria. Eu queria fazer algo do tipo (é claro que de maneira decente, isso aqui é só pra entender):

switch(SQLException.getErrorCode()){
case 1: msg = "Esse registro não pôde ser excluído por motivos, X, Y, Z"; break
case 2: msg = "Código já existente"; break
case 3: msg = "Valor X, Y,Z incorreto"; break
}
print(msg);

Não estou muito feliz com a idéia de ter que ficar analisando toda a String que vem de getMessage() para exibir uma mensagem de erro decente. Mas pelo visto não tem outro jeito.

é velinho, sinto lhe informar, mas eu tb naum conheço nenhuma outra maneira, a naum ser analisando cada msg…

vou ficar devendo…

o que vc pode estar fazendo é colocando msgs mais genéricas. Tipo do seu exemplo:

Abraços,