0

我一直在嘗試處理全局情況,當我的調度程序servlet沒有爲請求的url定義映射,但還沒有找到解決方案。處理「DispatcherServlet中的HTTP請求未找到映射」情況

這是我處理全球異常類:

@ControllerAdvice 
public class GlobalExceptionHandlerController { 

@Value("${exception.view.default}") 
private String defaultExceptionView; 

private static final Logger LOGGER = Logger.getLogger(GlobalExceptionHandlerController.class); 

@ExceptionHandler(Exception.class) 
public ModelAndView notFoundException(Exception e) { 
    LOGGER.error("Error ocurred: " + e.getMessage()); 
    return new ModelAndView(defaultExceptionView) 
      .addObject("code", "404") 
      .addObject("name", "Page Not Found") 
      .addObject("message", "We couldn't find requested resource"); 
    } 
} 

我試過內@ExceptionHandler許多不同的類,但沒有爲我工作。該處理程序工作正常 - 當我從其中一個控制器拋出異常並且不在本地處理時,它直接轉到此全局處理程序。

有沒有辦法通過@ControllerAdvice執行這種異常處理?

回答

0

是,配置DispatcherServletsetThrowExceptionIfNoHandlerFound這臺

[...]是否拋出NoHandlerFoundException當沒有Handler被發現的這一請求 。這個例外可以通過 HandlerExceptionResolver@ExceptionHandler控制器方法來捕獲。

並做它所說的,即。爲NoHandlerFoundException例外定義@ExceptionHandler

+0

謝謝,它的工作!沒有意識到調度程序配置選項。 –

相關問題