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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SpringBoot 工程中的異常處理方式

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

在項(xiàng)目的開(kāi)發(fā)中,不管是對(duì)底層的數(shù)據(jù)邏輯操作過(guò)程,還是業(yè)務(wù)邏輯的處理過(guò)程,還是控制邏輯的處理過(guò)程,都不可避免會(huì)遇到各種可預(yù)知的、不可預(yù)知的異常。處理好異常對(duì)系統(tǒng)有很好的保護(hù)作用,同時(shí)會(huì)大大提高用戶的體驗(yàn)。

異常處理分析概述

Java項(xiàng)目中處理異常方式無(wú)非兩種,要么執(zhí)行trycatch操作,要么執(zhí)行throw操作(拋給其它對(duì)象處理),無(wú)論采用哪種方式,其目的是讓我們的系統(tǒng)對(duì)異常要有反饋。但現(xiàn)在的問(wèn)題是我們?nèi)绾巫屵@種反饋代碼的編寫(xiě)即簡(jiǎn)單又直觀、友好。

處理規(guī)范

我們?cè)谔幚懋惓5倪^(guò)程中通常要遵循一定的設(shè)計(jì)規(guī)范,例如:

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

準(zhǔn)備工作

第一步:創(chuàng)建項(xiàng)目或module,并添加web依賴,代碼如下:

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

第二步:修改項(xiàng)目訪問(wèn)端口為80,例如

server.port=80

第三步:定義Controller類(lèi),代碼如下:

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; }}

第四步啟動(dòng)項(xiàng)目進(jìn)行訪問(wèn)測(cè)試

在瀏覽器地址欄輸入http://localhost/doCompute/10/2,檢測(cè)輸出結(jié)果。

Result is 5默認(rèn)異常處理

在瀏覽器地址欄輸入http://localhost/doCompute/10/0,檢測(cè)輸出結(jié)果。

SpringBoot 工程中的異常處理方式

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

自己try異常處理

在控制層方法中,我們可以進(jìn)行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(); } }

一個(gè)Controller類(lèi)中通常會(huì)有多個(gè)方法,這樣多個(gè)方法中都寫(xiě)try語(yǔ)句進(jìn)行異常處理會(huì)帶來(lái)大量重復(fù)代碼的編寫(xiě),不易維護(hù)。

Controller內(nèi)部定義異常處理方法

在Controller類(lèi)中添加異常處理方法,代碼如下:

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

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

控制層中的全局異常處理類(lèi)及方法定義

當(dāng)項(xiàng)目由多個(gè)控制層類(lèi)中有多個(gè)共性異常的處理方法定義時(shí),我們可以將這些方法提取到公共的父類(lèi)對(duì)象中,但是這種方式是一種強(qiáng)耦合的實(shí)現(xiàn),不利于代碼的維護(hù)。我們還可以借助spring框架中web模塊定義的全局異常處理規(guī)范進(jìn)行實(shí)現(xiàn),例如定義全局異常處理類(lèi),代碼如下:

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

其中,@RestControllerAdvice 注解描述的類(lèi)為全局異常處理類(lèi),當(dāng)控制層方法中的異常沒(méi)有自己捕獲,也沒(méi)有定義其內(nèi)部的異常處理方法,底層默認(rèn)會(huì)查找全局異常處理類(lèi),調(diào)用對(duì)應(yīng)的異常處理方法進(jìn)行異常處理。如圖所示:

SpringBoot 工程中的異常處理方式

總結(jié)(Summary)

本小節(jié)主要是對(duì)springboot中的異常處理機(jī)制進(jìn)行了簡(jiǎn)單分析和講解。目的是掌握springboot工程下的異常處理方式,并基于業(yè)務(wù)的不同進(jìn)行響應(yīng)的異常處理。從而有效提高其用戶體驗(yàn),加強(qiáng)系統(tǒng)的容錯(cuò)能力。

以上就是SpringBoot 工程中的異常處理方式的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot 異常處理的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人精品一区二区免费看京| 精品一区在线| 欧美日韩四区| 免费欧美一区| 亚洲性色av| 精品视频免费| 久久av免费| 精品三级国产| 国产一区二区三区探花| 老司机免费视频一区二区三区| 一区二区高清| 91嫩草精品| 久久91视频| 韩国三级一区| 久久精品国产68国产精品亚洲| 国产中文欧美日韩在线| 欧美freesex黑人又粗又大| 成人自拍av| 欧美专区在线| 日韩精品a在线观看91| 国产精品久久乐| 精品久久精品| 午夜在线视频观看日韩17c| 日韩国产91| 精品一区二区三区四区五区| 国产精品亚洲综合色区韩国| 久久久精品区| 亚洲精品99| 国产亚洲欧美日韩精品一区二区三区| 久久久久亚洲精品中文字幕| 99视频精品全国免费| 婷婷精品在线| 日韩电影二区| 亚洲久久在线| 日韩中文欧美| 日本午夜精品久久久久| 久久精品91| 国产欧美在线| 99成人超碰| 国产日韩欧美三区| 欧美不卡高清一区二区三区| 视频一区国产视频| 国产网站在线| 青青草91久久久久久久久| 久久精品国产99久久| 国产毛片精品| 天海翼亚洲一区二区三区| 日产精品一区| 久久一区精品| 国产精品一区二区精品| 欧美一区=区| 日韩一区二区在线免费| 国产精品成人3p一区二区三区| 男女激情视频一区| 夜久久久久久| 国产精品久久久久久久免费观看| 亚洲免费观看高清完整版在线观| 欧美不卡高清一区二区三区| 国产一卡不卡| 日韩国产在线不卡视频| 蜜桃免费网站一区二区三区| 日本韩国欧美超级黄在线观看| 国产精品高颜值在线观看| 国产精品中文字幕亚洲欧美| 日韩精品亚洲专区| 亚洲资源网站| 日韩中文字幕区一区有砖一区| 亚洲精品电影| 自拍日韩欧美| 在线视频亚洲| 美女网站一区| 日韩视频一区| 欧美网站在线| 久久国产精品99国产| 欧美日韩激情| 鲁大师影院一区二区三区| 黄色日韩在线| 免费在线观看精品| 中文无码久久精品| 日韩av资源网| 久久精品毛片| 亚洲精品.com| 国产亚洲欧洲| 日本99精品| 国产精久久一区二区| 国产亚洲一区| 国产一区二区三区探花| 日韩一区亚洲二区| 久久不射中文字幕| 国产九九精品| 中文字幕系列一区| 蜜桃传媒麻豆第一区在线观看| 青青草视频一区| 日韩中文欧美| 欧美视频久久| 国产综合亚洲精品一区二| 日韩精品视频一区二区三区| 麻豆国产欧美一区二区三区| 日韩欧美精品一区| 日韩欧美中文字幕电影| 国产精品传媒麻豆hd| 欧美一区二区性| 国产亚洲人成a在线v网站| 91精品推荐| 国产福利资源一区| 天堂网在线观看国产精品| 国产日韩一区二区三区在线| 日韩精品首页| 日本天堂一区| 国产精品美女久久久| 国产一区国产二区国产三区| 亚洲香蕉视频| 在线精品视频在线观看高清| 久久精品国产999大香线蕉| 亚洲视频电影在线| 日韩欧美一区免费| 欧美国产免费| 日韩avvvv在线播放| 一区二区三区网站| 丝袜美腿成人在线| 最新亚洲激情| 午夜精品免费| 欧美午夜精彩| 一区二区三区四区在线看| 麻豆国产在线| 久久久久久久欧美精品| 欧美一区=区三区| 日韩高清不卡在线| 欧美午夜不卡| 好吊日精品视频| 国产美女精品| 91精品国产福利在线观看麻豆| 亚洲www啪成人一区二区| 久久99青青| 欧美日本精品| 国产劲爆久久| 国产精品亚洲综合在线观看| 日韩在线观看中文字幕| 天堂va欧美ⅴa亚洲va一国产| 精品中文字幕一区二区三区av| 国产精品草草| 欧美日本二区| 六月丁香综合在线视频| 国产欧美日韩精品一区二区免费| 亚洲精品一二三**| 免费精品国产| 日韩高清欧美激情| 欧美在线观看天堂一区二区三区| 亚洲精品九九| 欧美亚洲tv| 91看片一区| 自拍日韩欧美| 蜜桃视频一区二区三区在线观看| 欧美日韩日本国产亚洲在线| 日韩国产一区二| 91精品丝袜国产高跟在线| 日韩精品亚洲一区二区三区免费| 五月亚洲婷婷 | 激情自拍一区| 日韩视频久久| 蜜桃伊人久久| 久久精品国产福利| 999久久久亚洲| 亚洲精品在线观看91| 丝袜美腿一区二区三区| 91亚洲无吗| 国产伦久视频在线观看| 精品欧美久久| 欧美亚洲国产日韩| 美女视频黄久久| 日韩精品一区第一页| 国产精品网站在线看| 成午夜精品一区二区三区软件| 国产毛片久久| 麻豆精品在线观看| 亚洲黄色影院| 日韩欧美久久| 亚洲激情五月| 久久国产人妖系列| 日韩三区免费| 国产欧美一区二区精品久久久| 美女毛片一区二区三区四区最新中文字幕亚洲 | 精品一级视频| 蜜臀久久99精品久久久久久9| 国产精品中文字幕亚洲欧美| 日韩不卡免费高清视频| av不卡在线| 美女视频一区在线观看| 中文字幕在线视频久| 日本在线视频一区二区| 久久国产直播| 麻豆精品少妇| 亚洲精品福利| 91精品电影| 日韩精品不卡一区二区| 亚洲制服一区| 模特精品在线| 久久久人人人| 国产精品成人a在线观看| 免费美女久久99|