1. 程式人生 > >springmvc學習筆記(30)——@ResponseStatus註解處理異常

springmvc學習筆記(30)——@ResponseStatus註解處理異常

一、ResponseStatus修飾類

ResponseStatus註解的使用非常簡單,我們建立一個異常類,加上註解

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@ResponseStatus(value=HttpStatus.FORBIDDEN,reason="使用者不匹配")
public class UserNotMatchException extends RuntimeException{


}
  • ResponseStatus註解是修飾類的

          value:value屬性是http狀態碼,比如404,500等

          reason:是錯誤資訊

 寫一個目標方法丟擲該異常

@RequestMapping("/testResponseStatus")
    public String testResponseStatus(int i){
        if(i==0)
            throw new UserNotMatchException();
        return "hello";
    }

當傳入引數i==0的時候將拋異常。下圖是效果圖 

使用了ResponseStatus註解之後,使用者看到的異常介面正是我們自己定義的異常,而不再是一大堆使用者看不懂的程式碼。

二、ResponseStatus修飾方法

ResponseStatus如果修飾目標方法,將會發生什麼事。

@ResponseStatus(value=HttpStatus.FORBIDDEN,reason="使用者名稱不匹配")
    @RequestMapping("/testResponseStatus")
    public String testResponseStatus(int i){
        if(i==0)
            throw new UserNotMatchException();
        return "hello";
    }

 

  • 仔細看這張結果圖中的訪問路徑,我傳入的引數是i=1,正常來說是不應該拋異常的,可是它拋了。。它真的拋了。。
  • 結論:ResponseStatus修飾目標方法,無論它執行方法過程中有沒有異常產生,使用者都會得到異常的介面。而目標方法正常執行