我有一个controllerAdvice类,用于处理两个异常
@ControllerAdvice
public class MyGlobalExceptionHandler{
@ExceptionHandler({ UserNotFoundException.class, ContentNotAllowedException.class }){
//my code here
}
现在在控制器上,如果我将代码放在try catch
块中,那两个exception
是否会到达controllerAdvice类?
@RequestMapping(value = "/myurl", method = RequestMethod.GET)
public ResponseEntity<?> getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {
try{
//my code here that will throw UserNotFoundException or ContentNotAllowedException
}Catch(Exception e){
//handle exception here
}
我不明白上面的示例将如何进行异常处理。
答案 0 :(得分:1)
也许您可以做到:
@RequestMapping(value = "/myurl", method = RequestMethod.GET)
public ResponseEntity<?> getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {
try{
// Your code here that will throw UserNotFoundException or ContentNotAllowedException
} catch(Exception exception){
if (exception instanceof UserNotFoundException || exception instanceof ContentNotAllowedException) {
throw exception;
}
// Handle other types of exceptions here
}
}
然后将仅处理UserNotFoundException
和ContentNotAllowedException
,并且@ExceptionHandler
中的@ControllerAdvice
方法将能够处理它们。
答案 1 :(得分:0)
@ControllerAdvice用于拦截控制器的异常。当一个应用程序具有多个控制器并且需要以独特的方式拦截或处理特定异常时,将使用此方法。控制器中的异常处理取决于您如何在MyGlobalExceptionHandler中构造ResponseEntity。