最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring異常實(shí)現(xiàn)統(tǒng)一處理的方法

 更新時(shí)間:2022年12月08日 14:35:17   作者:居然天上樓  
這篇文章主要介紹了Spring異常實(shí)現(xiàn)統(tǒng)一處理的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧

1.統(tǒng)一處理異常的機(jī)制

Spring MVC框架提供了統(tǒng)一處理異常的機(jī)制!表現(xiàn)為每種類型的異常只需要寫一段(寫一次)處理此異常的代碼即可,項(xiàng)目中無(wú)論處理哪種請(qǐng)求時(shí),只要出現(xiàn)這種異常,都會(huì)自動(dòng)執(zhí)行這段代碼!

提示:當(dāng)項(xiàng)目中添加了spring-boot-starter-web依賴項(xiàng),此依賴項(xiàng)中的核心就是Spring MVC框架的依賴項(xiàng)。

在實(shí)現(xiàn)統(tǒng)一處理異常之前,需要先使得控制器中處理請(qǐng)求的方法不再處理異常!則處理請(qǐng)求的方法表現(xiàn)為拋出異常(但并不需要從代碼中顯式的表現(xiàn)出來(lái))!

2.關(guān)于統(tǒng)一處理異常的方法

訪問權(quán)限:應(yīng)該使用public

返回值類型:參考處理請(qǐng)求的方法方法

名稱:自定義

參數(shù)列表:至少有1個(gè)異常類型的參數(shù),表示被處理的異常,另外,可以按需添加;HttpServletRequest、HttpServletResponse等少量特定類型的參數(shù),不可以隨意添加其它;參數(shù),例如不可以添加HttpSession等,如果有多個(gè)參數(shù),各參數(shù)可以不區(qū)分先后順序;

注解:必須添加@ExceptionHandler,表示此方法是處理異常的方法。

@ExceptionHandler
public String handleServiceException(ServiceException e) {
    return e.getMessage();
}

3.關(guān)于處理異常的方法的執(zhí)行特點(diǎn)

允許同時(shí)存在多個(gè)處理異常的方法,只要這些方法處理的異常不完全相同即可;

多個(gè)處理異常的方法,其處理的異常類型允許存在繼承關(guān)系;

  • 例如某方法處理NullPointerException,另一個(gè)方法處理RuntimeException,是正確的;
  • 當(dāng)出現(xiàn)子級(jí)異常時(shí),將執(zhí)行處理子級(jí)異常的方法;

如果將處理異常的方法定義在控制器類中,則這些方法只能作用于當(dāng)前控制器類中處理的請(qǐng)求;

可以自定義類,在類上添加@RestControllerAdvice注解,將處理異常的方法聲明在這個(gè)類中,可以作用于當(dāng)前項(xiàng)目中所有處理請(qǐng)求時(shí)方法。

則在項(xiàng)目的根包下創(chuàng)建ex.handler.GlobalExceptionHandler類,在類上添中@RestControllerAdvice注解,并在此類中處理異常(在任何控制器類中都不再處理異常):

package cn.tedu.csmall.product.ex.handler;
import cn.tedu.csmall.product.ex.ServiceException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler
    public String handleServiceException(ServiceException e) {
        return e.getMessage();
    }
    @ExceptionHandler
    public String handleNullPointerException(NullPointerException e) {
        return "程序出現(xiàn)了空指針異常,已經(jīng)被處理!";
    }
    @ExceptionHandler
    public String handleRuntimeException(RuntimeException e) {
        return "程序出現(xiàn)了RuntimeException,已經(jīng)被處理!";
    }
}

User login(String username, String password) throws 用戶名不存在異常, 密碼錯(cuò)誤異常, 賬號(hào)非法狀態(tài)異常……
// boolean:表示登錄成功,或登錄失敗
//             但是,無(wú)法表示哪種失敗
// int:使用某個(gè)數(shù)據(jù)表示某種狀態(tài),例如1表示登錄成功,2表示用戶名錯(cuò),3表示密碼錯(cuò),4表示封號(hào),等等
//            但是,無(wú)法返回登錄成功的結(jié)果

try {
    User user = service.login("root", "1234");
    // 將User對(duì)象保存到Session中
} catch (用戶名不存在異常 e) {
} catch (密碼錯(cuò)誤異常 e) {
} catch (賬號(hào)非法狀態(tài)異常 e) {
}

到此這篇關(guān)于Spring異常實(shí)現(xiàn)統(tǒng)一處理的方法的文章就介紹到這了,更多相關(guān)Spring異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過使用Byte?Buddy便捷創(chuàng)建Java?Agent

    通過使用Byte?Buddy便捷創(chuàng)建Java?Agent

    這篇文章主要為大家介紹了如何通過使用Byte?Buddy便捷創(chuàng)建Java?Agent的使用說(shuō)明,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 編程語(yǔ)言榜單Java與Python并列第二!Julia下滑

    編程語(yǔ)言榜單Java與Python并列第二!Julia下滑

    日新月異的技術(shù)圈,隨著云、大數(shù)據(jù)、人工智能等主流技術(shù)的廣泛應(yīng)用,作為開發(fā)利器的編程語(yǔ)言的最新發(fā)展趨勢(shì)也在無(wú)形中發(fā)生了變化,本文主要介紹了java、Python、Julia等語(yǔ)言在Resmonk榜單的排名
    2021-08-08
  • 最新評(píng)論

    马尔康县| 南安市| 灵武市| 宜州市| 阿瓦提县| 区。| 孝义市| 梅州市| 微山县| 桓台县| 仪陇县| 铅山县| 鄂州市| 乌拉特前旗| 瑞丽市| 富蕴县| 德令哈市| 绥德县| 平罗县| 江西省| 郑州市| 漳州市| 桓仁| 三亚市| 康保县| 鲁山县| 德钦县| 正镶白旗| 江孜县| 随州市| 马边| 芜湖市| 文昌市| 武威市| 龙岩市| 潞西市| 新竹县| 高邮市| 怀化市| 昌宁县| 广平县|