2016-03-27 12 views
0

Seit der Behandlung dieses Szenarios zum ersten Mal, fragen Sie, welcher der beste Ansatz ist.Wie können wir verschiedene Zollnachrichten für die gleiche Ausnahme geben

Hier für alle die DataIntegrityViolationException, die gleiche Fehlermeldung zu senden

@Override 
public boolean saveParam(ParamDto dto) throws ParamException 
{ 
    try 
    { 
     return super.save(dto); 
    } 
    catch(DataIntegrityViolationException e) 
    { 
     throw new ParamException(ParamException.INTERNAL_SERVER_ERROR, messageSource.getMessage(CodeEnum.DUPLICATE_APP.getValue(), new Object[] { dto.getParamKey() }, Locale.ENGLISH)); 
    } 
    catch (GenericException ge) 
    { 
     throw new ParamException(ge, ge.getRootCauseMessage()); 
    } 
} 

Wie können wir geben verschiedene Zoll Nachrichten für die gleiche Ausnahme. Müssen wir den Nachrichtenstring überprüfen?

Hier mit 2 verschiedenen Ausnahmen unter DataIntegrityViolationException.

  1. "ERROR: value too long for type character(1)" (id=172) ""

  2. "ERROR: duplicate key value violates unique constraint "uk_param_key"\n Detail: Key (param_key)=(Test1) already exists."

+1

Sie können JdbcExceptionTranslator verwenden. http://stackoverflow.com/questions/2109476/how-to-handle-dataintegrityviolationexception-in-spring – Rehman

Antwort

1

Wie Sie tun bereits, wenn Sie die DataIntegrityViolationException Ausnahme getMostSpecificCause Methode gefangen haben, die eigentliche Ursache der Ausnahme zu erhalten.

Dann können Sie prüfen, um zu sehen, ob die Ausnahme des spezifischen Typs mit instanceof Schlüsselwort ist und Ihre Nachricht entsprechend anpassen. Zum Beispiel wirft der MySQL JDBC-Treiber MysqlDataTruncation, MySQLIntegrityConstraintViolationException usw. für verschiedene Arten von Fehlern. Überprüfen Sie die Dokumentation, um die verschiedenen Arten von Ausnahmen zu sehen, die von Ihrem Datenbanktreiber ausgelöst wurden.

Auch Sie können die Ausnahmebedingungsnachricht prüfen und mit einer vordefinierten Nachricht vergleichen, aber das ist ein bisschen knifflig und fehleranfällig.

Verwandte Themen