基本上我們只需要針對@Controller與@RestController兩種類型的控制器做不同的錯誤處理就行,RestController是較為麻煩設計的,因為你要去針對不同的例外回傳訊息給使用者,不然使用者根本不知道他哪邊出錯了,要是這時候你將他一直導到error.jsp or error.html的頁面,我想沒有哪個User會怒噴你這個爛系統吧
1.我在一個@RestController新增了一個例外處理的方法為Not_Found()
@ResponseStatus(value=HttpStatus.NOT_FOUND,reason="Page is not Exist")
@ExceptionHandler(NullPointerException.class)
public ResponseEntity<Object> Not_Found() {
System.out.println("進入NullPointerException例外處理");
return new ResponseEntity<Object>(
"NOT FOUND THE DATA ", new HttpHeaders(), HttpStatus.NOT_FOUND);
}
示意圖如下:
@RequestMapping(value="/{id}")
public Optional<Memberaccount> read(@ModelAttribute("message") String msg,Model model,@PathVariable long id) {
Map map = new HashMap();
String email = map.get("EMAIL").toString();
if(email == null) throw new NullPointerException(email);
System.out.println(email);
return memberapiRepository.findById(id);
}
當 email字串為null我就會拋出 NullPointerException的例外,如果你要測試的話可以這樣做,這是唯一的重點
1.如果做了太多種的例外處理其實是對你的程式結構破壞性會很大,盡量要控制住他的成長
2.接下來的六天我已經想好要介紹什麼主題了,請拭目以待吧
(http://www.baeldung.com/global-error-handler-in-a-spring-rest-api ) - 作者: baeldung