У меня проблема в том, что я не могу обработать пользовательские исключения, хотя я добавил код в блок try catch, а также создал один пользовательский перехватчик, но не смог найти способ перехвата исключений. Я должен обработать определенные пользователем исключения, такие как исключение sqlтаблица не существует и также должна отображать сообщение об ошибке на экране.
У меня есть этот класс обработчика перехватчика:
public class RNTExceptionInterceptor implements ThrowsAdvice{
/** Creating instance of the Log class for logging the errors. */
private static final Logger log = LogManager.getLogger(RNTExceptionInterceptor.class);
/**
* This method is used to generate log on each target objects method's exception and set the error code for
*
* @param method Method object
* @param args set of arguments
* @param target Target class
* @param ex Error Object
* @throws RNTSystemException when any system related exception occurs
* @throws RNTBusinessException when any business related exception occurs
*/
public void afterThrowing(Method method, Object[] args, Object target, Throwable ex)
throws RNTSystemException, RNTBusinessException {
log.error("Exception in method: " + method.getName() + " Exception is: " + ex.getMessage(), ex);
log.info(getStackTrace(ex));
log.info("Class of the exception is "+ex.getClass());
if (ex instanceof RNTBusinessException) {
throw (RNTBusinessException)ex;
} else if (ex instanceof RNTSystemException) {
throw (RNTSystemException)ex;
} else if (ex instanceof NullPointerException) {
throw new RNTSystemException(SYSTEM_ERROR, ex);
} else {
throw new RNTSystemException(ex.getMessage(), ex);
}
}
и это мой контроллер:
@RequestMapping(value = "/displayKra.do")
public ModelAndView displayKra(HttpServletRequest request, HttpServletResponse res) throws RNTException,SQLException, PropertyVetoException{
HttpSession session = request.getSession();
Dashboard dashboard = (Dashboard) session.getAttribute(DASHBOARD_SESSION_ATTRIBUTE);
AppraisalType appraisaltype=null;
try{
appraisaltype = appraisalDao.getManagerList(dashboard.getStaffID());
appraisaltype.setUserMessage(getMessage(MANAGER_LIST_FETCHED_SUCCESSFULLY));
}catch(RNTSystemException e){
log.error(e.getMessage(),e);
appraisaltype.setErrorMessage(e.getMessage());
}
return new ModelAndView(KRA_1_JSP, "appraisaltype", appraisaltype);
}