Sie fangen die falsche Ausnahme
Ich bin versucht zu fangen eine bestimmte exception mit MySQL
im Java
. Aber, es läuft die catch (SQLException ex)
anstelle von der, die ich will.
catch (MySQLIntegrityConstraintViolationException ex) {
}
catch (SQLException ex) {
}
Immer folgende Fehlermeldung, ich würde erwarten, dass es laufen die catch (MySQLIntegrityConstraintViolationException ex)
Funktion.
11:12:06 AM DAO.UserDAO createUser
SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'idjaisjddiaij123ij' for key 'udid'
Warum ist es läuft catch (SQLException ex)
statt catch (MySQLIntegrityConstraintViolationException ex)
?
- Können Sie hinzufügen, ex.printStackTrace(); in jedem catcha und fügen Sie die Ausnahme?
- Scheint es in
.getCause()
durch Zufall?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja
MySQL
immer auf und fangen dieSQLException
bei der Ausführung der Methode. was Sie tun müssen, ist zu fangen dieSQLException
in Ihrer Ausführung der Methode, Sie werfen neueMySQLIntegrityConstraintViolationException
so, in der äußeren Methode, die execute-Methode, sollte es zu fangen nur die
MySQLIntegrityConstraintViolationException
Stellen Sie sicher, dass Sie das richtige namespace. Für mich, dass man auf dem Bild im Anhang funktioniert wie ein Charme.
Schlage ich
ex instanceof MySQLIntegrityConstraintViolationException
um sicherzustellen, dass keine andere Ausnahme wird ausgelöst, als MySQLIntegrityConstraintViolationexception seit SQLException geworfen werden kann für viele verschiedene Gründe.Bitte importieren Sie
Ich getestet und es funktioniert.
Ich hatte das gleiche problem, und ich hatte zu zeigen, durch eine JOptionPane-Nachricht die Art des Fehlers an den Benutzer. Dies ist meine Lösung