日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot 工程中的異常處理方式

瀏覽:44日期:2023-03-25 09:18:08
背景分析

在項目的開發中,不管是對底層的數據邏輯操作過程,還是業務邏輯的處理過程,還是控制邏輯的處理過程,都不可避免會遇到各種可預知的、不可預知的異常。處理好異常對系統有很好的保護作用,同時會大大提高用戶的體驗。

異常處理分析概述

Java項目中處理異常方式無非兩種,要么執行trycatch操作,要么執行throw操作(拋給其它對象處理),無論采用哪種方式,其目的是讓我們的系統對異常要有反饋。但現在的問題是我們如何讓這種反饋代碼的編寫即簡單又直觀、友好。

處理規范

我們在處理異常的過程中通常要遵循一定的設計規范,例如:

捕獲異常時與拋出的異常必須完全匹配,或者捕獲異常是拋出異常的父類類型。 避免直接拋出RuntimeException,更不允許拋出Exception或者Throwable,應使用有業務含義的自定義異常(例如ServiceException)。 捕獲異常后必須進行處理(例如記錄日志)。如果不想處理它,需要將異常拋給它的調用者。 最外層的邏輯必須處理異常,將其轉化成用戶可以理解的內容。 避免出現重復的代碼(Don’t Repeat Yourself),即DAY原則。 SpringBoot 工程下的異常處理

準備工作

第一步:創建項目或module,并添加web依賴,代碼如下:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>

第二步:修改項目訪問端口為80,例如

server.port=80

第三步:定義Controller類,代碼如下:

package com.cy.pj.arithmetic.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class ArithmeticController { @RequestMapping('doCompute/{n1}/{n2}') @ResponseBody public String doCompute(@PathVariable Integer n1, @PathVariable Integer n2){ Integer result=n1/n2; return 'Result is '+result; }}

第四步啟動項目進行訪問測試

在瀏覽器地址欄輸入http://localhost/doCompute/10/2,檢測輸出結果。

Result is 5默認異常處理

在瀏覽器地址欄輸入http://localhost/doCompute/10/0,檢測輸出結果。

SpringBoot 工程中的異常處理方式

對于這樣的默認異常處理(spring boot提供),用戶體驗不太友好,為了呈現更加友好的異常信息,我們通常要對異常進行自定義處理。

自己try異常處理

在控制層方法中,我們可以進行try catch處理,例如:

@RequestMapping('doCompute/{n1}/{n2}') @ResponseBody public String doCompute(@PathVariable Integer n1, @PathVariable Integer n2){ try{ Integer result=n1/n2; return 'Result is '+result; }catch(ArithmeticException e){ return 'exception is '+e.getMessage(); } }

一個Controller類中通常會有多個方法,這樣多個方法中都寫try語句進行異常處理會帶來大量重復代碼的編寫,不易維護。

Controller內部定義異常處理方法

在Controller類中添加異常處理方法,代碼如下:

@ExceptionHandler(ArithmeticException.class)@ResponseBodypublic String doHandleArithmeticException(ArithmeticException e){ e.printStackTrace(); return '計算過程中出現了異常,異常信息為'+e.getMessage();}

@ExceptionHandler注解描述的方法為異常處理方法(注解中的異常類型為可處理的異常類型),假如Controller類中的邏輯方法中出現異常后沒有處理異常,則會查找Controller類中有沒有定義異常處理方法,假如定義了,且可以處理拋出的異常類型,則由異常處理方法處理異常。

控制層中的全局異常處理類及方法定義

當項目由多個控制層類中有多個共性異常的處理方法定義時,我們可以將這些方法提取到公共的父類對象中,但是這種方式是一種強耦合的實現,不利于代碼的維護。我們還可以借助spring框架中web模塊定義的全局異常處理規范進行實現,例如定義全局異常處理類,代碼如下:

package com.cy.pj.common.web;@RestControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(ArithmeticException.class) public String doHandleArithmeticException(ArithmeticException e){ e.printStackTrace(); return '計算過程中出現了異常,異常信息為'+e.getMessage(); }}

其中,@RestControllerAdvice 注解描述的類為全局異常處理類,當控制層方法中的異常沒有自己捕獲,也沒有定義其內部的異常處理方法,底層默認會查找全局異常處理類,調用對應的異常處理方法進行異常處理。如圖所示:

SpringBoot 工程中的異常處理方式

總結(Summary)

本小節主要是對springboot中的異常處理機制進行了簡單分析和講解。目的是掌握springboot工程下的異常處理方式,并基于業務的不同進行響應的異常處理。從而有效提高其用戶體驗,加強系統的容錯能力。

以上就是SpringBoot 工程中的異常處理方式的詳細內容,更多關于SpringBoot 異常處理的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲综合婷婷| 麻豆精品蜜桃视频网站| 欧美国产美女| 精品久久久网| 精品精品久久| 日韩伦理一区| 欧美日韩精品一区二区视频| 婷婷成人综合| 91久久在线| 免费不卡在线观看| 日本亚洲视频| 国产精品一区二区精品视频观看 | 亚洲黄色网址| 成人亚洲一区| 欧美日韩一区二区三区视频播放| 红桃视频欧美| 亚洲精品精选| 国产精品最新| а√天堂8资源在线| 九一国产精品| 亚洲精品少妇| 久久精品系列| 在线一区视频观看| 亚洲涩涩av| 国产精品18| 国产一区二区三区四区五区| 香蕉精品久久| 奇米色欧美一区二区三区| 国产精品www.| 偷拍精品精品一区二区三区| 在线视频日韩| 国产九九精品| 久久美女性网| 最新国产精品视频| 国产精品视频一区二区三区四蜜臂| 欧美精品99| 欧美影院三区| 日韩欧美中文字幕电影| 成人在线观看免费视频| 欧美日韩国产在线观看网站 | 久久久免费人体| 欧美日韩视频网站| 免费在线观看成人| 国产精品宾馆| 日韩视频二区| 麻豆国产欧美一区二区三区| 亚洲性视频h| 国产情侣久久| 日韩av自拍| 亚洲精品看片| 91偷拍一区二区三区精品| 香蕉久久国产| 精品资源在线| 视频一区二区中文字幕| 久久香蕉网站| 亚洲免费激情| 国产在线日韩精品| 一级成人国产| 久久久成人网| 国产日本亚洲| 999国产精品永久免费视频app| 天堂av一区| 激情五月综合网| 国产在线不卡一区二区三区 | 日韩制服丝袜av| 国精品产品一区| 亚洲精品裸体| 久久精品一区二区不卡| 日本不卡视频一二三区| 五月激情久久| 国产美女久久| 性色一区二区| 91免费精品| 国产精品丝袜在线播放| 日韩影院在线观看| 久久精品影视| 国产91欧美| 久久国产尿小便嘘嘘| 欧美精品一线| 日韩精品不卡一区二区| 欧美日韩亚洲三区| 亚洲免费网址| 日韩成人亚洲| 国产精品亚洲欧美日韩一区在线| 一区免费在线| 日韩不卡免费高清视频| 国产精久久久| 日本午夜精品视频在线观看| 亚洲欧美日韩国产综合精品二区| 日韩成人综合| 国产一区二区三区网| 久久国产三级| 日本不卡视频在线| 久久国产精品久久w女人spa| 久久久一本精品| 精品视频国产| 欧美日本不卡| 日韩精品视频网| 在线视频免费在线观看一区二区| 人在线成免费视频| 国产亚洲一区| 日韩中文一区二区| 中文字幕亚洲精品乱码| 国产综合激情| 免费污视频在线一区| 日本久久黄色| 久久女人天堂| 麻豆91小视频| 久久av综合| 久久国产人妖系列| 欧美另类中文字幕| 国产欧美高清视频在线| 日韩高清欧美激情| 中文字幕日韩高清在线| 一区二区三区国产盗摄| 久久国产精品99国产| 亚洲自拍另类| 亚洲免费婷婷| 免费日韩精品中文字幕视频在线| 99在线观看免费视频精品观看| 久久精品影视| 亚洲午夜电影| 午夜精品一区二区三区国产| 久久国产免费| 欧美综合另类| 婷婷久久一区| 欧美精品一区二区三区精品| 国产综合激情| 国产视频一区免费看| 日韩视频二区| 亚洲精品三级| 欧美精品中文字幕亚洲专区| 国产精品美女在线观看直播| 国产欧美一区二区三区国产幕精品| 日本免费新一区视频| 日韩和欧美一区二区| 奇米色欧美一区二区三区| 国产亚洲一卡2卡3卡4卡新区| 国产美女亚洲精品7777| 欧美经典一区| 中文字幕在线高清| 久久精品1区| 午夜精品婷婷| 亚洲一区二区网站| 亚洲不卡视频| 日本a口亚洲| 美女毛片一区二区三区四区最新中文字幕亚洲 | 国产精品久久久久蜜臀| 在线精品亚洲欧美日韩国产| 成人羞羞在线观看网站| 亚洲激情中文在线| 亚洲精品九九| 精品一区二区三区中文字幕 | 国产成人精品一区二区三区在线| 日韩黄色大片| 日韩一区精品字幕| 欧美激情日韩| 99久久久国产精品美女| 亚洲精品福利| 国产成人免费| 亚洲欧美久久| 国产精品v亚洲精品v日韩精品| 成人久久一区| 日韩精品一级| 日韩欧美中文| 亚洲毛片视频| 国产va在线视频| 久久在线电影| 免播放器亚洲| 精品高清久久| 亚洲尤物在线| 麻豆传媒一区二区三区| 免费国产自久久久久三四区久久| 蜜臀久久99精品久久久久宅男| 国产麻豆精品久久| 亚洲a一区二区三区| 日韩精选在线| 久久久夜夜夜| 国产亚洲一区二区三区啪| 欧美成人基地| 人人精品久久| 日本а中文在线天堂| 亚欧洲精品视频在线观看| 国产精品国产三级在线观看| 日本国产精品| 国产精品宾馆| 免费在线观看日韩欧美| 亚洲精品福利电影| 日韩影片在线观看| 日韩精品欧美激情一区二区| 日韩精品午夜视频| 欧美+日本+国产+在线a∨观看| 久久精品99久久久| 中文日韩欧美| 中文字幕在线视频久| 欧美偷窥清纯综合图区| 欧美/亚洲一区| 国产一区三区在线播放| 亚洲一区导航| 欧美日韩国产在线观看网站|