2016-06-03 9 views
1

In meiner Ressource Methode i die unten angegebene Ausnahmekönnen nicht in Java benutzerdefinierte Ausnahme fangen

@Override 
    public Response registerByDebitCard(RegistrationRequest registrationRequest,BeanFilter beanFilter) { 
     try { 


      RegistrationResponse registrationResponse = registrationService.doRegister(registrationRequest, beanFilter); 

      return Response.ok(registrationResponse).build(); 
     } catch (CannotCreateTransactionException e) { 
      LOGGER.error("Error Message is :: {}", e.getMessage()); 
      throw new RegistrationFailureException("MPYR0012", "Due to database technical problem signup failed"); 
     } 
    } 

erhalten wird, wenn ich oben Ausnahme fange es funktioniert. Ich versuche, diese Ausnahme mit meiner benutzerdefinierten Ausnahmeklasse abzufangen, die ich nicht fangen kann. Nachstehend ist meine benutzerdefinierte Ausnahmeklasse.

public class TransactionManagerDBException extends CannotCreateTransactionException { 

    /** 
    * @param msg 
    */ 
    public TransactionManagerDBException(String msg) { 
     super(msg); 

    } 

    public TransactionManagerDBException(String msg, Throwable cause) { 
     super(msg, cause); 

    } 

} 

Meine Ressourcen Methode:

@Override 
     public Response registerByDebitCard(RegistrationRequest registrationRequest,BeanFilter beanFilter) { 
      try { 


       RegistrationResponse registrationResponse = registrationService.doRegister(registrationRequest, beanFilter); 

       return Response.ok(registrationResponse).build(); 
      } catch (TransactionManagerDBException e) { 
       LOGGER.error("Error Message is :: {}", e.getMessage()); 
       throw new RegistrationFailureException("MPYR0012", "Due to database technical problem signup failed"); 
      } 
     } 

Jetzt bin ich nicht in der Lage dies ihr etwas zu fangen exception.Is falsch in meiner Ausnahme handling.please zu erklären, was mit meinem Ansatz falsch

Jede Hilfe wird sehr geschätzt werden !!!!

+0

Ist 'TransactionManagerDBExceptione' ein Tippfehler? – Berger

+0

Ja, es sollte TransactionManagerDBException e sein – Madhesh

+0

Wohin werfen Sie 'TransactionManagerDBException'? – Berger

Antwort

0

Ihre TransactionManagerDBException IS-A CannotCreateTransactionException. Aber das Gegenteil ist nicht wahr. Wenn Ihr registrationService einen CannotCreateTransactionException wirft, ist es kein TransactionManagerDBException.

Wenn Sie die Methode doRegister nicht ändern können, um eine TransactionManagerDBException zu werfen, können Sie nur einen catch-Block verwenden, der CannotCreateTransactionException verwendet.

+0

, danke für die Antwort, aber es ist nicht einmal die DoRegister-Methode eingeben.CannotCreateTransactionException diese Ausnahme tritt auf, weil die Datenbank nicht verbunden Problem – Madhesh

+0

Der Aufruf von 'DoRegister' ist die erste Zeile des Codes, es ist der erste Ort Ihrer Versuch/Catch Block, der eine Ausnahme auslösen kann. Geben Sie sogar die Methode 'registerByDebitCard' ein? Wenn nicht, Ihr Problem ist Spring-Kontext Start, und Ihre Versuch/Catch-Block kann nichts dagegen tun ... – Wis

+0

ja das Problem ist im Frühjahr Transaktionsmanager – Madhesh