我有一個Spring控制器,註釋爲@RestController
,它返回JSON。我也有一個課程註釋@ControllerAdvice
與@ExceptionHandler
s有關的一些自定義例外。我正在使用Tomcat來提供此RESTful API。我希望有任何非自定義異常(例如來自第三方庫或NullPointerException的異常)被捕獲並返回狀態爲500 - 內部服務器錯誤爲帶有消息的JSON,而不是顯示錯誤的HTML頁面。在Spring控制器上返回未捕獲異常的JSON
如果我在控制器建議中使用@ExceptionHandler(Exception.class)
,它會接管所有Spring異常,如MissingPathVariableException.class,這是不理想的。我試過擴展Spring的ResponseEntityExceptionHandler,但這個類沒有用@ResponseBody註釋,所以不返回JSON。
- 如何在Spring RESTful API中爲未捕獲和未知異常(無法計劃的異常)返回JSON而不影響Spring的內部?
- 如何關閉完全返回的HTML,並確保只有JSON響應,無論請求是否有異常?