मैं वर्तमान में एक स्प्रिंग MVC परियोजना में अपवाद हैंडलिंग के लिए HandlerExceptionResolver
उपयोग करने के लिए कोशिश कर रहा हूँ।वसंत MVC अपवाद HandlerExceptionResolver
मैं resolveException
के माध्यम से सामान्य अपवादों को संभालना चाहता हूं और 404 के handleNoSuchRequestHandlingMethod
के माध्यम से सामान्य अपवादों को संभालना चाहता हूं।
अनुरोध प्रकार JSON या पाठ पर निर्भर करता है/HTML अपवाद प्रतिक्रिया उचित रूप से किया जाना चाहिये।
resolveException
अब काम करता है।
लेकिन handleNoSuchRequestHandlingMethod
मुझे सिरदर्द दे रहा है। इसे कभी नहीं कहा जाता है!
दस्तावेज के अनुसार विधि 404 त्रुटियों
क्या मैं गलत कर रहा हूँ पर बुलाया जाना चाहिए ...
यह वही है मैं अब तक है। DefaultHandlerExceptionResolver साथ
public class JsonExceptionResolver implements HandlerExceptionResolver {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView resolveException(HttpServletRequest request,
if (exception instanceof NoSuchRequestHandlingMethodException) {
return handleNoSuchRequestHandlingMethod((NoSuchRequestHandlingMethodException) exception, request, response, handler);
}
...
}
public ModelAndView handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler){
logger.info("Handle my exception!!!");
ModelAndView mav = new ModelAndView();
boolean isJSON = request.getHeader("Accept").equals("application/json");
if(isJSON){
...
}else{
..
}
return mav;
}
}
संपादित करें:
public class MyExceptionResolver extends DefaultHandlerExceptionResolver {
protected final Log logger = LogFactory.getLog(getClass());
@Override
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) {
logger.warn("An Exception has occured in the application", exception);
logger.info("exception thrown " + exception.getMessage());
if (exception instanceof NoSuchRequestHandlingMethodException) {
return handleNoSuchRequestHandlingMethod((NoSuchRequestHandlingMethodException) exception, request, response, handler);
}
...
return mav;
}
public ModelAndView handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler){
logger.info("Handle my exception!!!");
ModelAndView mav = new ModelAndView();
boolean isJSON = request.getHeader("Accept").equals("application/json");
if(isJSON){
...
}else{
...
}
return mav;
}
}
ऊपर कोड अभी भी कोई प्रभाव नहीं है।
कोई अन्य विचार?
मैं अपने कोड अद्यतन के बारे में टिकट। क्या आपका मतलब यह था? –
मैंने इसे 'डिफॉल्ट हैंडलर एक्सेप्शन रीसोलवर'' से विरासत के साथ भी करने की कोशिश की, लेकिन 404 के मामले में ''doResolveException'' कभी नहीं बुलाया गया ... क्या मैंने आपको याद किया? –