在我的资源方法中,我将获得以下异常
@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");
}
}
如果我抓住上述异常就行了。 我尝试使用我无法捕获的自定义异常类来捕获此异常.Below是我的自定义异常类。
public class TransactionManagerDBException extends CannotCreateTransactionException {
/**
* @param msg
*/
public TransactionManagerDBException(String msg) {
super(msg);
}
public TransactionManagerDBException(String msg, Throwable cause) {
super(msg, cause);
}
}
我的资源方法:
@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");
}
}
现在我无法捕捉到这个异常。我的异常处理中有什么问题。请解释我的方法有什么问题
任何帮助将不胜感激!!!!
答案 0 :(得分:0)
您的TransactionManagerDBException
IS-A CannotCreateTransactionException
。但事实恰恰相反。如果您的registrationService
确实抛出CannotCreateTransactionException
,那么它不是TransactionManagerDBException
。
如果您无法更改doRegister
方法以抛出TransactionManagerDBException
,则只能使用CannotCreateTransactionException
使用catch块。