2016-11-29 3 views
2

Mein Java ist etwas eingerostet und ich möchte die Qualität meines Codes erhöhen. Ich möchte mit den zu erwartenden Fehlern mit Ausnahmen umgehen, weiß aber nicht genau wie.Handle über Ausnahmen: com.mysql.jdbc.MysqlDataTruncation

Ich bin bewusst, versuchen zu fangen. Aber meins sieht immer so ohne Handhabung:

try { ...} 

catch (SQLException e) { 
    e.printStackTrace(); 
    System.exit(1); 
} 

Ich bin mit Java JDBC mit MySQL und ich erhalte diese konkreten Fehler:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: 
Data too long for column 'column_name' 

Es ist klar, dass der Wert war zu groß und muss gekürzt werden. Sicherlich kann ich die Eingabe überprüfen, bevor ich sie der Datenbank gebe, aber es könnte andere Fehler geben, die ich ebenfalls behandeln möchte.

Wie behebe ich dies durch Ausnahmebehandlung? Ist SQLException die richtige Ausnahme für meinen Fehler?

Es gibt diese doppelte Frage: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'column_name'. Es wird jedoch nicht erörtert, wie mit Ausnahmen umzugehen ist.

+0

Es gibt fast nie einen guten Grund, 'System.exit' zu verwenden, außer vielleicht in sehr einfachen Konsolenanwendungen. –

Antwort

1

How do I remedy this via exception handling ?

Ja, wie Sie bereits erwähnt, sollten Sie Ihre Bewerbung alle Eingangs Validierungen decken richtig, bevor es in die DAO-Schicht eintritt, so dass die Anfrage die Datenbank und scheitern nicht getroffen/erreichen. Dazu können Sie javax Validierungen (wie Min., Max. Größe usw., siehe here) für die DTO-Bean-Objekte verwenden. in den oberen Schichten gefiltert werden, bevor die DAO Erreichen oder Schlagen Datenbank

Is SQLException the right Exception for my error ?

Ja, SQLException ist die richtige Ausnahme, aber wie oben erwähnt die Anforderungen sollten. Außerdem müssen Sie die folgenden Punkte notieren:

(1) Ihre Ausnahmeprotokollierung ist nicht korrekt, d. H. e.printStackTrace() ist nicht korrekt, verwenden Sie Protokollierungsgerüste wie log4j, um die Ausnahmedetails zu protokollieren.

(2) Nach den SQLException Fang, die beste Praxis ist in eine geeignetes BusinessException und throw es zurück an den Anrufer mit einer aussagekräftigen Fehlermeldung an das User Interface zu wickeln. Wenn Ihre Anwendung nur ein Backend-Service/-Prozess ist, können Sie die SQLException Details einfach in eine Datei unter Verwendung von log4j (abhängig von den Geschäftsanforderungen) protokollieren und dann die Statistiken solcher Ausnahmen sammeln, um die Grundursache zu identifizieren.

Verwandte Themen