精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

六個Spring Boot處理異常的小技巧

移動開發
本文我們通過一個實際場景的例子來詳細說明,在Spring Boot應用程序中處理產品相關的自定義異常并進行全局處理的情況。

在Spring框架中,@ControllerAdvice是全局異常處理機制,用于集中處理應用程序中發生的異常。

當任何控制器方法(例如REST端點)拋出異常時,該異常會被@ControllerAdvice注解的類捕獲。

@ControllerAdvice類中的@ExceptionHandler方法用于處理特定類型的異常,并返回適當的響應。

本文我們通過一個實際場景的例子來詳細說明,在Spring Boot應用程序中處理產品相關的自定義異常并進行全局處理的情況。

步驟:

1. 創建自定義的ProductNotFoundException:

在這一步中,我們創建一個自定義異常類ProductNotFoundException,它繼承自RuntimeException。這個自定義異常用于表示系統中找不到產品的情況。通過創建自定義異常,我們可以提供更具體的錯誤信息。

public class ProductNotFoundException extends RuntimeException {
 public ProductNotFoundException(Long productId) {
 super(“Product not found with ID: “ + productId);
 }
}

解釋:

  • 自定義異常用于捕獲應用程序特定的錯誤場景。
  • 在這種情況下,我們在異常消息中包含了productId,以提供有關缺失產品的詳細信息。

2. 創建產品服務(Product Service):

在這步,我們創建一個ProductService類,負責獲取產品信息。如果找不到產品,會拋出ProductNotFoundException。

@Service
public class ProductService {

    public Product getProductById(Long productId) {
        // 模擬獲取產品的邏輯
        Product product = getProductFromDatabase(productId);
        
        if (product == null) {
            throw new ProductNotFoundException(productId);
        }
        
        return product;
    }

    // 模擬從數據庫獲取產品的方法
    private Product getProductFromDatabase(Long productId) {
        // 在這里實現您的數據庫邏輯
        // 如果找不到產品,則返回null
        return null;
    }
}

解釋:

  • ProductService封裝了與產品相關的業務邏輯。
  • getProductById方法模擬從數據庫或其他數據源獲取產品。
  • 如果找不到產品(基于模擬),會拋出ProductNotFoundException。

3. 創建全局異常處理器(Global Exception Handler):

這一步涉及使用@ControllerAdvice創建一個全局異常處理器。該處理器負責全局捕獲ProductNotFoundException,并返回自定義錯誤響應。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(ProductNotFoundException.class)
    public ResponseEntity<ErrorResponse> handleProductNotFoundException(ProductNotFoundException ex) {
        ErrorResponse errorResponse = new ErrorResponse(HttpStatus.NOT_FOUND.value(), ex.getMessage());
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse);
    }
}

解釋:

  • @ControllerAdvice將該類標記為全局異常處理器,使其能夠處理來自多個控制器的異常。
  • 處理器內的@ExceptionHandler方法捕獲ProductNotFoundException。
  • 它使用異常中的自定義錯誤消息構建一個包含404 Not Found狀態碼的ErrorResponse對象。
  • 處理器返回包含錯誤詳細信息的JSON響應。

4. 創建自定義錯誤響應類(Custom Error Response Class):

我們定義一個自定義的錯誤響應類ErrorResponse,以便在應用程序中統一結構化錯誤消息。

public class ErrorResponse {
    private int statusCode;
    private String message;

    public ErrorResponse(int statusCode, String message) {
        this.statusCode = statusCode;
        this.message = message;
    }
    // Getter方法
}

解釋:

  • ErrorResponse類提供了一個標準化的錯誤響應格式。
  • 它包含HTTP狀態碼和描述錯誤的消息字段。

5. 產品控制器(Controller):

在這一步中,我們創建一個控制器ProductController,負責處理根據產品ID獲取產品的請求。

@RestController
@RequestMapping("/api/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    @GetMapping("/{productId}")
    public ResponseEntity<Product> getProduct(@PathVariable Long productId) {
        Product product = productService.getProductById(productId);
        return ResponseEntity.ok(product);
    }
}

解釋:

  • ProductController定義了一個端點,用于根據產品ID獲取產品詳細信息。
  • 它使用ProductService來獲取產品。
  • 如果找到產品,它將返回包含產品數據的成功響應。

6. 測試異常處理:

為了測試異常處理,發送GET請求來獲取在系統中不存在的產品信息。這將觸發ProductNotFoundException,并由全局異常處理器返回一個JSON格式的錯誤消息。

curl -X GET http://localhost:8080/api/products/123

響應:

{
    "statusCode": 404,
    "message": "Product not found with ID: 123"
}

解釋:

  • 測試請求嘗試獲取一個在系統中不存在的產品的信息,例如ID為123的產品。
  • 結果導致服務層拋出ProductNotFoundException異常。
  • 標記為@ControllerAdvice的全局異常處理器捕獲該異常,并構建一個包含404狀態碼和自定義錯誤消息的JSON格式錯誤響應。

順序流程圖

從控制器到使用@ControllerAdvice進行錯誤處理的Spring應用程序的流程順序圖:

(1) 控制器層:

客戶端(例如Web瀏覽器或REST客戶端)向Spring應用程序發出請求,通常是向公開的HTTP端點發送請求。

(2) 控制器方法執行:

Spring MVC框架根據請求映射注解(如@GetMapping或@PostMapping)將傳入的請求路由到適當的控制器方法。

控制器方法執行并執行其業務邏輯。

(3) 異常發生:

在執行控制器方法的過程中,由于各種原因可能會拋出異常。這可能是由于業務邏輯錯誤、驗證失敗或任何其他意外問題。

4 異常傳播:

一旦在控制器方法內部拋出異常,它就會開始沿著調用堆棧向上傳播。

(55) @ControllerAdvice類:

異常向上傳播,直到達到使用@ControllerAdvice注解的全局異常處理器類為止。

(6) @ExceptionHandler方法:

在@ControllerAdvice類中,定義了一個或多個@ExceptionHandler方法來處理特定類型的異常。

(7) 匹配異常處理器:

Spring框架根據方法的參數類型識別出適當的@ExceptionHandler方法來處理特定的異常類型。

(8) 異常處理:

匹配的@ExceptionHandler方法執行以處理異常。

此方法可以執行諸如記錄錯誤、構建錯誤響應或執行任何其他自定義操作的任務。

(9) 生成響應:

@ExceptionHandler方法通常生成一個錯誤響應,可以是JSON響應、HTML頁面或任何其他響應格式。

(10) 響應發送給客戶端:

由@ExceptionHandler方法生成的錯誤響應發送回原始請求的客戶端。

(11) 客戶端接收錯誤響應:

客戶端接收錯誤響應,并根據需要處理錯誤信息。例如,它可以向用戶顯示錯誤消息或以編程方式處理錯誤。

責任編輯:趙寧寧 來源: Java學研大本營
相關推薦

2023-10-10 18:24:46

PostgreSQL性能RDBMS

2015-07-30 14:43:04

導航欄iOS開發

2022-11-30 15:01:11

React技巧代碼

2022-05-17 15:34:08

視覺效果UI 界面設計

2024-12-04 09:27:56

2024-03-06 10:50:30

云計算云實例云提供商

2016-12-15 09:53:07

自學編程技巧

2011-08-04 16:04:09

注冊表

2022-04-29 17:03:37

WordPress開發者網站安全

2024-01-30 08:43:26

IF 語句JavaScripJS

2023-02-08 17:00:07

IF 語句技巧代碼

2024-07-15 08:10:57

2021-10-09 10:00:52

遠程招聘技巧招聘

2022-06-28 10:17:23

安全職位首席信息安全官

2023-01-29 07:45:06

DevOps

2017-08-30 19:11:38

Linux命令行tab

2023-05-05 22:10:05

2021-01-21 08:00:00

開發工具VS Code

2013-09-12 11:40:22

VDI部署VDI

2024-01-08 18:05:19

PyCharm技巧功能
點贊
收藏

51CTO技術棧公眾號

裸体裸乳免费看| 奇门遁甲1982国语版免费观看高清| 亚洲这里只有精品| 羞羞网站在线看| 不卡av电影在线播放| 国产不卡av在线| 蜜臀av午夜精品久久| 国产一级成人av| 欧美三级视频在线| bt天堂新版中文在线地址| 三级在线播放| 国产毛片精品视频| 日本国产一区二区三区| 动漫性做爰视频| 国产精品午夜一区二区三区| 日韩久久久久久| 无码人妻精品一区二区三区66| 26uuu亚洲电影在线观看| 久久色在线视频| 91超碰在线电影| 亚洲天堂aaa| 99视频一区| 麻豆成人在线看| 久久午夜福利电影| 美国成人xxx| 亚洲免费精彩视频| 天天操天天爱天天爽| 欧美巨大xxxx做受沙滩| 欧美国产乱子伦| 国内精品二区| www精品国产| 久久国产生活片100| 欧洲成人免费aa| 国产一级一片免费播放| 希岛爱理一区二区三区| 亚洲午夜色婷婷在线| 波多野结衣一二三区| 精品一区视频| 91 com成人网| 日韩精品你懂的| 欧美男女交配| 欧美日韩综合视频网址| 妞干网在线观看视频| 91黄色在线| 亚洲欧美日韩一区二区 | 国产精品日本一区二区三区在线| 日韩欧美在线免费观看| 俄罗斯av网站| 黄频免费在线观看| 五月天激情综合| 无码日本精品xxxxxxxxx| av观看在线| 亚洲欧美国产三级| 日本丰满少妇黄大片在线观看| √天堂资源地址在线官网| 欧美极品少妇xxxxⅹ高跟鞋| 日韩精品一区二区三区色偷偷| 欧美日韩视频精品二区| 久久久久久久网| 日韩欧美三级一区二区| 成年午夜在线| 亚洲欧洲色图综合| 日韩中文在线字幕| 91三级在线| 亚洲成人综合视频| 成熟丰满熟妇高潮xxxxx视频| 999福利在线视频| 欧美性猛交xxxx久久久| 亚洲 中文字幕 日韩 无码| 国产综合色区在线观看| 欧美午夜一区二区| 亚洲av无日韩毛片久久| 中文字幕区一区二区三| 亚洲国产精彩中文乱码av| 搡老熟女老女人一区二区| 国产成人一区| xvideos亚洲人网站| 日韩欧美123区| 黄页网站一区| 欧洲永久精品大片ww免费漫画| 伊人久久中文字幕| 韩国三级电影一区二区| 国产一区二区三区黄| 国产在线资源| 亚洲三级电影网站| 国产v片免费观看| 国产成人免费9x9x人网站视频| 欧美日韩视频专区在线播放| 久久久久亚洲av无码麻豆| 好吊妞视频这里有精品| 亚洲人成网7777777国产| 久草福利资源在线| 欧美视频日韩| 国产成人亚洲综合91| 国产精品国产av| 成人黄色a**站在线观看| 日产精品久久久一区二区| av在线免费播放| 色哟哟国产精品| 丰满少妇一区二区三区专区| 亚洲老女人视频免费| 久久久av亚洲男天堂| www.国产色| 国产一区二区在线免费观看| 久久艳妇乳肉豪妇荡乳av| 免费的黄网站在线观看| 欧美性猛交xxxx黑人| av影片在线播放| 欧美高清在线| 人人做人人澡人人爽欧美| 99精品视频免费看| 国产精品色婷婷久久58| 奇米精品一区二区三区| 精品视频一区二区三区在线观看| 亚洲女同精品视频| 精品深夜av无码一区二区老年| 蜜桃视频一区二区| 久久草.com| 欧美wwww| 日韩一区二区免费在线电影| 中文字幕第二区| 香蕉视频成人在线观看| 成人动漫视频在线观看免费| 自拍视频在线| 91成人国产精品| 一区二区不卡免费视频| 国产综合精品| 亚洲一区二区三区香蕉| 在线中文资源天堂| 一本大道久久a久久精二百| 中国免费黄色片| 欧美 日韩 国产 一区| 国产日韩欧美电影在线观看| 国产系列电影在线播放网址| 日韩欧美第一页| 亚洲激情 欧美| 影音先锋亚洲精品| av在线亚洲男人的天堂| 成人短视频在线| 在线综合视频播放| 亚洲欧美综合7777色婷婷| 日韩高清在线电影| 秋霞在线观看一区二区三区| 松下纱荣子在线观看| 亚洲第一精品久久忘忧草社区| 中文字幕av免费在线观看| 国内成人免费视频| 日韩视频在线观看视频| 色8久久久久| 日韩在线高清视频| 国产口爆吞精一区二区| 亚洲同性同志一二三专区| 日韩精品视频一二三| 欧美激情欧美| 3d动漫精品啪啪一区二区三区免费 | 亚洲成av人影院在线观看| 久久久久99精品成人片毛片| 国产精品 日产精品 欧美精品| 亚洲天堂第一区| 91精品啪在线观看国产爱臀 | 欧美mv日韩mv国产| 国产一级生活片| 99国产精品国产精品毛片| 91九色在线观看视频| 精品一区在线| 国产精品色午夜在线观看| 五月香视频在线观看| 欧美一区永久视频免费观看| 久久高清无码视频| 99久久精品国产网站| 免费大片在线观看| 欧美r级电影| av噜噜色噜噜久久| 中国字幕a在线看韩国电影| 亚洲人成网站在线播| 中文字幕一区二区人妻痴汉电车| 中文字幕一区日韩精品欧美| 丰满人妻一区二区三区大胸| 亚洲男人影院| 亚洲视频在线二区| 97久久亚洲| 国产精品69久久| 黄色片网站在线| 亚洲精品美女久久| 中文在线免费看视频| 伊人性伊人情综合网| 中文字幕乱码在线| 日本美女一区二区三区视频| 国产经典久久久| 久久99国内| 91成人伦理在线电影| 国产高清不卡| 欧美超级免费视 在线| 亚洲av电影一区| 91麻豆精品国产无毒不卡在线观看| 成人免费看片98| 中文字幕av一区二区三区| 日韩女优在线视频| 美女国产一区二区| 久久久久久久久久久99| 日韩精品一区二区三区免费观看| 国产精品v欧美精品v日韩精品| xxxxxx欧美| 欧美激情视频免费观看| av在线播放av| 亚洲精品成人久久| 国产精品老熟女视频一区二区| 午夜激情久久久| 91杏吧porn蝌蚪| 国产欧美视频一区二区| 免费看91视频| 另类小说视频一区二区| 日本免费不卡一区二区| 亚洲一区二区日韩| 亚洲狠狠婷婷综合久久久| 巨人精品**| 99电影网电视剧在线观看| 桃花岛tv亚洲品质| 7m精品福利视频导航| 中文字幕中文字幕在线中高清免费版 | 久久久久无码国产精品一区李宗瑞| 日韩va亚洲va欧美va久久| 每日在线观看av| 午夜天堂精品久久久久| 一区二区av| 精品一区电影| 欧美三级网色| 小嫩嫩12欧美| 精品久久蜜桃| av毛片精品| 99精品国产高清在线观看| 粉嫩av国产一区二区三区| 国产精品视频自在线| 国精产品一区一区三区四川| 青青久久aⅴ北条麻妃| 涩涩网在线视频| 98精品在线视频| 2021中文字幕在线| 欧美激情网友自拍| 欧洲中文在线| 久久久久久国产精品美女| 在线观看三级视频| 欧美巨大黑人极品精男| 久草资源在线观看| 精品国内产的精品视频在线观看| 香蕉视频在线免费看| 尤物yw午夜国产精品视频| 韩日视频在线| 中文字幕v亚洲ⅴv天堂| 永久av在线| 久久久久北条麻妃免费看| 美女羞羞视频在线观看| 久久天天躁狠狠躁夜夜躁| 超碰在线观看免费版| 久久亚洲精品网站| 丝袜中文在线| 8090成年在线看片午夜| 性欧美18~19sex高清播放| 日韩av成人在线| 日本一区二区三区视频在线| 国产精品专区一| 国产麻豆精品| 国产精品国产精品| 香蕉久久精品| 色一情一乱一伦一区二区三区 | 91国产免费视频| 欧美一区二区三级| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 亚洲高清在线观看| 久久久久久久影视| 色婷婷**av毛片一区| 羞羞的网站在线观看| 66m—66摸成人免费视频| 最新日韩精品| 91精品国产自产在线观看永久| 国产亚洲久久| 国产偷久久久精品专区| 国产91久久精品一区二区| 一区不卡字幕| 亚洲乱亚洲高清| 丝袜制服一区二区三区| 国产一区二区视频在线播放| 韩国三级hd两男一女| 国产欧美日韩精品一区| 欧美一级片在线视频| 午夜精品久久久久久久| 综合久久中文字幕| 精品欧美乱码久久久久久1区2区 | 久久奇米777| 精品国产精品国产精品| 午夜亚洲福利老司机| 在线观看免费高清视频| 精品国内二区三区| 成年人在线视频| 欧美激情视频在线观看| 日韩精品一区二区三区av| 国产精品久久精品国产| 日本一二区不卡| 成年人午夜视频在线观看 | 日韩欧美在线观看视频| 国产特级aaaaaa大片| 亚洲女同性videos| 欧美性video| 国产精品视频999| 亚洲一区二区三区中文字幕在线观看| 精品久久蜜桃| 欧美三级乱码| 久久婷五月综合| 99久久精品国产观看| 182在线观看视频| 色久综合一二码| 好吊视频一区二区三区| www.亚洲成人| 国产精品毛片久久久久久久久久99999999| dy888夜精品国产专区| 久久国产电影| 大香煮伊手机一区| av中文字幕一区| 黄色一级片中国| 欧美日韩一区国产| 国产在线日本| 欧美伊久线香蕉线新在线| 一本一道久久a久久| aaa免费在线观看| 麻豆成人免费电影| 亚洲女优在线观看| 色综合色狠狠综合色| 人妻精品无码一区二区| 久久99精品视频一区97| 精品国产亚洲一区二区三区| 色综合电影网| 日韩高清欧美激情| 爱爱的免费视频| 欧美日韩中文字幕日韩欧美| 欧洲av在线播放| 久久久噜噜噜久久| 日本在线视频一区二区三区| 亚洲国产精品女人| 国产制服丝袜一区| 人人澡人人澡人人看| 欧美日韩高清一区| 午夜在线播放| 国产日韩精品在线| 五月激情久久久| 中文字幕在线视频一区二区三区| 欧美国产日韩在线观看| 特级西西444www大胆免费看| 亚洲天堂2020| 嫩草伊人久久精品少妇av杨幂| 日本一区二区在线视频| 日韩精品欧美精品| 一级黄色录像毛片| 欧美在线free| 国产精品一区二区三区视频网站| 国产欧美一区二区三区四区| 99久久精品国产亚洲精品| 国产高清999| 亚洲精品一二三四区| 性一交一乱一乱一视频| 久久久噜噜噜久久中文字免| 成人激情自拍| av网站在线观看不卡| 国产欧美综合在线观看第十页| 伊人免费在线观看| 久久精品国产亚洲精品| 亚洲一区二区三区中文字幕在线观看| 男人插女人视频在线观看| 久久婷婷国产综合国色天香| 中国黄色一级视频| 免费av在线一区| 亚洲v天堂v手机在线| 艹b视频在线观看| 一区二区三区免费| 午夜小视频在线播放| 国产精品aaa| 伊人情人综合网| 无码一区二区精品| 欧美日本一区二区在线观看| 日本片在线观看| 欧美激情一区二区三区在线视频| 青草av.久久免费一区| 欧美三根一起进三p| 精品香蕉一区二区三区| 欧美高清影院| 欧美激情视频免费看| 国产精品系列在线| 蜜桃在线一区二区| 国产精品吹潮在线观看| 中文精品久久| jizz欧美性20| 91精品国产一区二区人妖| 亚洲黄色中文字幕| 国产卡一卡二在线| 久久亚洲欧美国产精品乐播| 国产精品视频a| 欧美制服第一页| 亚洲女同一区| 免费看污片的网站| 亚洲成人av片在线观看| 免费视频观看成人|