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

SpringMVC項目異常處理機制詳解

 更新時間:2022年08月30日 09:59:03   作者:mzz124  
SpringMVC是一種基于Java,實現(xiàn)了Web MVC設(shè)計模式,請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進行職責(zé)解耦?;谡埱篁?qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們?nèi)粘eb開發(fā)

1、異常分類

通常分為三類:系統(tǒng)異常(SystemException),業(yè)務(wù)異常(BusinessException)和其他異常(Exception)

  • 業(yè)務(wù)異常指由于用戶的不規(guī)范操作產(chǎn)生的異常,如不合法的參數(shù)傳入
  • 系統(tǒng)異常指項目運行過程中可預(yù)計但無法避免的異常,如數(shù)據(jù)庫宕機
  • 其他異常指開發(fā)者未曾預(yù)料到的異常

2、自定義項目業(yè)務(wù)異常

public class BusinessException extends RuntimeException {
    private Integer code;
    public BusinessException(Integer code, String message) {
        super(message);
        this.code = code;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
}

3、自定義項目系統(tǒng)異常

public class SystemException extends RuntimeException {
    private Integer code;
    public SystemException(Integer code, String message, Throwable cause) {
        super(message, cause);
        this.code = code;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
}

4、其他異常

其他異常是未預(yù)料到會發(fā)生的異常,除了上面的兩種異常外的所有異常都可以當(dāng)作其他異常,由于所有的異常都繼承自 Exception 類,所以就把 Exception 作為其他異常

5、異常代碼

提高代碼可讀性,便于開發(fā),自行協(xié)商設(shè)置即可

public class Code {
    public static final Integer SYSTEM_ERR = 50001;
    public static final Integer SYSTEM_TIMEOUT_ERR = 50002;
    public static final Integer SYSTEM_UNKNOWN_ERR = 59999;
    public static final Integer BUSINESS_ERR = 60001;
}

6、異常處理器

由于系統(tǒng)異常和其他異常需要工作人員對系統(tǒng)進行調(diào)整,所以出現(xiàn)這兩種異常時通常要記錄進日志,并將相關(guān)信息發(fā)送給運維人員和開發(fā)人員,而業(yè)務(wù)異常則不需要

@RestControllerAdvice
public class ProjectExceptionAdvice {
    // 攔截處理業(yè)務(wù)異常
    @ExceptionHandler(BusinessException.class)
    public Result doBusinessException(BusinessException ex) {
        return new Result(ex.getCode(), null, ex.getMessage());
    }
    // 攔截處理系統(tǒng)異常
    @ExceptionHandler(SystemException.class)
    public Result doSystemException(SystemException ex) {
        // 記錄日志,發(fā)送消息給運維人員,發(fā)送郵件給開發(fā)人員
        return new Result(ex.getCode(), null, ex.getMessage());
    }
    //攔截處理其他異常
    @ExceptionHandler(Exception.class)
    public Result doException(Exception ex) {
        // 記錄日志,發(fā)送消息給運維人員,發(fā)送郵件給開發(fā)人員
        return new Result(Code.SYSTEM_UNKNOWN_ERR, null, "系統(tǒng)繁忙,請聯(lián)系管理員。");
    }
}

7、異常發(fā)生

以業(yè)務(wù)層為例,查找 id 小于等于 0 時認(rèn)為參數(shù)非法,可以拋出業(yè)務(wù)異常。對于系統(tǒng)異常,使用 try catch 語句包裹可能會出現(xiàn)異常的語句,捕獲異常并包裝成自定義的異常,再將其拋出

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;
    @Override
    public Book getById(Integer id) {
        // id 小于等于零時拋出業(yè)務(wù)異常
        if (id <= 0) {
            throw new BusinessException(Code.BUSINESS_ERR, "參數(shù)不合法,請檢查傳入?yún)?shù)!");
        }
        // 將可能出現(xiàn)的異常進行包裝,裝換成自定義異常
        try {
            int x = 1 / 0;  // 加入此行出現(xiàn)異常
            return bookDao.getById(id); // 模擬數(shù)據(jù)庫訪問出錯
        } catch (Exception e) {
            throw new SystemException(Code.SYSTEM_TIMEOUT_ERR, "數(shù)據(jù)庫訪問異常,請稍后重試!", e);
        }
    }
}

最后可以用 Postman 發(fā)送對應(yīng)的請求進行測試

到此這篇關(guān)于SpringMVC項目異常處理機制詳解的文章就介紹到這了,更多相關(guān)SpringMVC異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實現(xiàn)計算器功能

    java實現(xiàn)計算器功能

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • idea配置tomcat,idea配置web下lib的包詳解

    idea配置tomcat,idea配置web下lib的包詳解

    這篇文章主要介紹了idea配置tomcat,idea配置web下lib的包,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java線程阻塞方法sleep()與wait()的全面講解

    Java線程阻塞方法sleep()與wait()的全面講解

    這篇文章主要介紹了Java線程阻塞方法sleep()與wait()的全面講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot項目的logback日志配置(包括打印mybatis的sql語句)

    SpringBoot項目的logback日志配置(包括打印mybatis的sql語句)

    這篇文章主要介紹了SpringBoot項目的logback日志配置(包括打印mybatis的sql語句),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • mybatis?foreach傳兩個參數(shù)批量刪除

    mybatis?foreach傳兩個參數(shù)批量刪除

    這篇文章主要介紹了mybatis?foreach?批量刪除傳兩個參數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 10分鐘帶你理解Java中的弱引用

    10分鐘帶你理解Java中的弱引用

    這篇文章將帶大家快速理解Java中弱引用,文章介紹的很詳細(xì),對大家學(xué)習(xí)Java很有幫助哦,有需要的可以參考借鑒。
    2016-08-08
  • java教程之二個arraylist排序的示例分享

    java教程之二個arraylist排序的示例分享

    常常遇到數(shù)組排序的問題,下面提供二個java的arraylist排序示例,需要的朋友可以參考下
    2014-03-03
  • mybatis-plus?如何使用雪花算法ID生成策略

    mybatis-plus?如何使用雪花算法ID生成策略

    這篇文章主要介紹了mybatis-plus如何使用雪花算法ID生成策略,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • MyBatis?Generator?ORM層面的代碼自動生成器(推薦)

    MyBatis?Generator?ORM層面的代碼自動生成器(推薦)

    Mybatis?Generator是一個專門為?MyBatis和?ibatis框架使用者提供的代碼生成器,也可以快速的根據(jù)數(shù)據(jù)表生成對應(yīng)的pojo類、Mapper接口、Mapper文件,甚至生成QBC風(fēng)格的查詢對象,這篇文章主要介紹了MyBatis?Generator?ORM層面的代碼自動生成器,需要的朋友可以參考下
    2023-01-01
  • Java 從互聯(lián)網(wǎng)上爬郵箱代碼示例

    Java 從互聯(lián)網(wǎng)上爬郵箱代碼示例

    這篇文章介紹了Java 從互聯(lián)網(wǎng)上爬郵箱的有關(guān)內(nèi)容,主要是一個代碼示例,小編覺得挺不錯的,這里給大家分享下,需要的朋友可以了解。
    2017-10-10

最新評論

英吉沙县| 米易县| 三河市| 昔阳县| 宣武区| 老河口市| 万盛区| 土默特右旗| 清水河县| 鄂托克旗| 宜川县| 灵寿县| 临泽县| 油尖旺区| 凤庆县| 木兰县| 湘阴县| 兴隆县| 浏阳市| 藁城市| 怀宁县| 广州市| 磐石市| 云龙县| 分宜县| 墨竹工卡县| 凤阳县| 宜春市| 邵阳市| 大荔县| 吴川市| 靖远县| 容城县| 塔城市| 平塘县| 镇原县| 普格县| 平乐县| 静安区| 东丽区| 周至县|