1. 程式人生 > >Spring MVC將異常對映到HTTP狀態碼

Spring MVC將異常對映到HTTP狀態碼

在自定義的異常類上使用@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的狀態碼。不過產生問題的原因未知。