Je dois séparer SQLExceptions
selon ErrorCode
. J'ai la déclaration suivante if
dans catch block
mais la condition else
est toujours imprimée.Java SQLException séparé selon le code d'erreur
catch (SQLException ex) {
if (ex.getErrorCode() == 28502){
System.out.println("Username Problem");
}
else{
System.out.println("Other Problem");
}
Logger.getLogger(FirstTimeMainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
En fait, quand je rentre inattendue username
lors de la création DB, les SQLExceptions
suivants sont jetés.
java.sql.SQLException: Failed to create database 'myDB', see the next exception for details.
//rest of exception.
Caused by: ERROR XJ041: Failed to create database 'myDB', see the next exception for details.
//rest of exception.
Caused by: ERROR XBM01: Startup failed due to an exception. See next exception for details
//rest of exception.
Caused by: ERROR 28502: The user name 'AAA.AAA' is not valid.
//rest of exception.
Mais mon catch
est toujours imprimer Other Problem
. Comment puis-je séparer différents SQLExceptions
selon le dernier ErrorCode
?
A en juger par l'exception, il est en fait la troisième exception qui a enchaîné ce code, essayez donc traverser la chaîne en utilisant 'ex.getNextException()'. Boucle jusqu'à ce que «null» ou vous trouvez le code d'erreur désiré. – blm
pouvez-vous simplement faire un System.out.println (ex.getErrorCode())? cela peut clairement vous dire quel est le code retourné – zerocool
@zerocool il renvoie '40000' –