一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Spring Boot統(tǒng)一異常處理詳解

Spring Boot統(tǒng)一異常處理詳解

2020-08-05 11:13橘子不酸的博客 Java教程

我們?cè)谧鯳eb應(yīng)用的時(shí)候,請(qǐng)求處理過程中發(fā)生錯(cuò)誤是非常常見的情況。這個(gè)時(shí)候就需要統(tǒng)一異常處理了,這篇文章主要給大家介紹了Spring Boot如何進(jìn)行統(tǒng)一異常處理的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

Spring Boot中默認(rèn)帶了error的映射,但是這個(gè)錯(cuò)誤頁面顯示給用戶并不是很友好。

統(tǒng)一異常處理

通過使用@ControllerAdvice定義統(tǒng)一異常處理的類,而不是在每個(gè)Controller中逐個(gè)定義。

@ExceptionHandler用來定義函數(shù)針對(duì)的函數(shù)類型,最后將Exception對(duì)象和請(qǐng)求URL映射到URL中。

?
1
2
3
4
5
6
7
8
9
10
11
12
@ControllerAdvice
class ExceptionTranslator {
 public static final String DEFAULT_ERROR_VIEW = "error";
 @ExceptionHandler(value = Exception.class)
 public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
  ModelAndView mav = new ModelAndView();
  mav.addObject("exception", e);
  mav.addObject("url", req.getRequestURL());
  mav.setViewName(DEFAULT_ERROR_VIEW);
  return mav;
 }
}

實(shí)現(xiàn)error.html頁面展示

在templates目錄下創(chuàng)建error.html。

例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8" />
 <title>統(tǒng)一異常處理</title>
</head>
<body>
 <h1>Error Handler</h1>
 <div th:text="${url}"></div>
 <div th:text="${exception.message}"></div>
</body>
</html>

返回使用Json格式

只需在@ExceptionHandler之后加入@ResponseBody,就能讓處理函數(shù)return的內(nèi)容轉(zhuǎn)換為JSON格式

創(chuàng)建一個(gè)JSON返回對(duì)象,如:

?
1
2
3
4
5
6
7
public class ErrorDTO implements Serializable {
 private static final long serialVersionUID = 1L;
 private final String message;
 private final String description;
 private List<FieldErrorDTO> fieldErrors;
 //getter和setter省略
}

可以為指定的Exception添加異常處理

?
1
2
3
4
5
6
@ExceptionHandler(ConcurrencyFailureException.class)
 @ResponseStatus(HttpStatus.CONFLICT)
 @ResponseBody
 public ErrorDTO processConcurencyError(ConcurrencyFailureException ex) {
  return new ErrorDTO(ErrorConstants.ERR_CONCURRENCY_FAILURE);
 }

ErrorConstants.ERR_CONCURRENCY_FAILURE 是定義的一個(gè)異常信息。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲区一 | 好男人资源在线观看免费的 | 日本精品欧洲www | 99视频观看 | 四虎网站入口 | 6个老师的尿奴 | chinesespanking网站| 国语视频高清在线观看 | 91久久偷偷做嫩草影院免费看 | 99热这里只精品99re66 | 无遮挡h肉动漫在线观看电车 | 亚洲第一综合网 | 国产精品1024永久免费视频 | 亚洲AV午夜福利精品香蕉麻豆 | 亚洲欧美日韩特级毛片 | 青青青国产精品国产精品美女 | 国产午夜免费 | 精品国产午夜久久久久九九 | 久久精品无码一区二区日韩av | bl超h 高h 污肉快穿np | 日本中出视频 | 91麻豆精品国产 | 国产精品原创永久在线观看 | 操一操影院 | 97影院网| 婷婷99视频精品全部在线观看 | aⅴ视频在线免播放观看 | 兽操人 | 日本精品欧洲www | 无码国产成人777爽死 | 国产梦呦精品 | 大学生特黄特色大片免费播放 | 亚洲精品国产综合久久一线 | 午夜一级影院 | 91无套极品外围在线播放 | 成人精品亚洲 | 男女爆操 | 国内精品久久久久影院男同志 | 97精品国产高清在线看入口 | 久久99re热在线观看视频 | 女同性互吃奶乳免费视频 |