Spring MVC將異常對映到HTTP狀態碼
阿新 • • 發佈:2019-01-03
在自定義的異常類上使用@ResponseStatus更改當請求產生異常時返回的HTTP狀態碼時產生了問題,雖然異常仍然被@ExceptionHandler註解的異常處理方法攔截了,但是產生的狀態碼仍然是200。
解決方法是將@ResponseStatus註解移到異常處理方法上,如
@ControllerAdvice
@RestController
public class CustomExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public Map<String, String> emptyResultHandler() {
Map<String, String> map = new HashMap<String, String>();
map.put("status", "error");
map.put("message", "使用者名稱或密碼錯誤!");
return map;
}
}
此時就可以得到404的狀態碼。不過產生問題的原因未知。