我想知道如何将异常handling method
绑定到url mapping
方法:
@Controller
public class UserController {
@Autowired
UserDao userDao;
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String users(@ModelAttribute("model") ModelMap model) {
model.addAttribute("userList", userDao.getAll());
String[] b = new String[0];
String a = b[1];
return "user";
}
@ExceptionHandler(Exception.class)
public String handleAllException(Exception ex, @ModelAttribute("model") ModelMap model) {
model.addAttribute("error", "Exception happened");
return "error_screen";
}
}
我故意在java.lang.ArrayIndexOutOfBoundsException
方法中挑起users
。但是我发现没有执行handleAllException
方法。
问题:
我忘了做些什么让Exception Handling
正常工作?
答案 0 :(得分:1)
尝试做这样的事情:
@ExceptionHandler(Exception.class)
public ModelAndView handleAllException(Exception ex) {
ModelAndView model = new ModelAndView("error_screen");
model.addAttribute("error", "Exception happened");
return model;
}
答案 1 :(得分:0)
尝试以下
@ExceptionHandler(Exception.class) -> @ExceptionHandler({Exception.class})
答案 2 :(得分:0)
原因是在尝试调用handleAllException()方法时,它因以下异常而失败:
DEBUG [http-nio-8080-exec-6] --- ExceptionHandlerExceptionResolver:无法调用@ExceptionHandler方法:public java.lang.String controllers.handleAllException(java.lang.Exception,org.springframework。 ui.ModelMap)强> java.lang.IllegalStateException:参数[1]没有合适的解析器[type = org.springframework.ui.ModelMap] HandlerMethod详细信息:
更改方法如下:
@ExceptionHandler(Exception.class)
public String handleAllException(Exception ex) {
// model.addAttribute("error", String.format("Exception happened"));
return "error_screen";
}