<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          IDEA Tips:Debug時(shí)如何優(yōu)雅地制造異常?

          共 1460字,需瀏覽 3分鐘

           ·

          2022-04-18 01:03

          拋異常相信大家都會(huì)吧?只需要這樣就可以了:

          throw?new?RuntimeException("didispace.com");

          但是,在開發(fā)過程中有一些情況,我們需要測(cè)試程序?qū)Ξ惓5奶幚磉壿嬍欠裾_,這個(gè)時(shí)候就需要我們?cè)诔绦蜻\(yùn)行時(shí)主動(dòng)的拋出異常才會(huì)觸發(fā)相關(guān)邏輯來驗(yàn)證正確性,比較常見的場(chǎng)景有:事務(wù)是否會(huì)回滾、Web層的統(tǒng)一異常處理等等。

          這個(gè)時(shí)候,你是如何去制造異常,來支持你的調(diào)試呢

          下面我就以前寫的Spring Boot教程(https://blog.didispace.com/spring-boot-learning-2x/)里一個(gè)事務(wù)處理的例子為場(chǎng)景,給大家看看一些常見的調(diào)試操作以及今天要講的更優(yōu)雅的操作。

          案例說明

          先介紹下場(chǎng)景,這是一個(gè)用Spring Data JPA實(shí)現(xiàn)的數(shù)據(jù)庫(kù)操作案例,右側(cè)UserService里一個(gè)事務(wù)操作,里面含有5句User表的插入語(yǔ)句。

          因?yàn)?code style="padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;font-size: 12px;color: rgb(71, 193, 168);">@Transactional注解存在,所以saveSomeUsers函數(shù)下的數(shù)據(jù)插入要么都成功,要么都失敗。成功很好測(cè)試,要測(cè)試失敗的話,則需要我們讓這個(gè)函數(shù)拋出異常才能觸發(fā)回滾操作。

          擼起袖子就是拋

          為了拋出異常以驗(yàn)證事務(wù)是否能回滾,很多小伙伴是這樣干的:

          直接在這個(gè)函數(shù)里手工拋出異常,很粗暴很直接,是可以完成目標(biāo)。雖然這種方法在單元測(cè)試中作為一種場(chǎng)景是可以的,但如果在復(fù)雜的業(yè)務(wù)過程中這樣做就不那么優(yōu)雅了,因?yàn)槟銣y(cè)試好還要?jiǎng)h掉它,如果忘記了,那就是直接寫了個(gè)Bug。

          優(yōu)雅地拋異常

          實(shí)際上IDEA提供了自由拋異常的功能,只需要在Debug的時(shí)候,右鍵前幾天介紹的回退操作Reset Framehttps://blog.didispace.com/intellij-idea-tips-005/位置,就可以看到如下圖箭頭所標(biāo)的Throw Exception操作了。

          然后在彈出框中,你就可以編寫你想要拋出的異常了:

          是不是很簡(jiǎn)單呢?趕緊打開IDEA試一試吧!

          我正在連載IDEA專題(https://space.bilibili.com/396803537)的視頻內(nèi)容,感興趣的小伙伴可以關(guān)注我的B站或視頻號(hào)喲!

          ------
          我們創(chuàng)建了一個(gè)高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會(huì)優(yōu)秀起來,趕緊點(diǎn)擊加群,享受一起成長(zhǎng)的快樂。另外,如果你最近想跳槽的話,年前我花了2周時(shí)間收集了一波大廠面經(jīng),節(jié)后準(zhǔn)備跳槽的可以點(diǎn)擊這里領(lǐng)取

          推薦閱讀

          ··································

          你好,我是程序猿DD,10年開發(fā)老司機(jī)、阿里云MVP、騰訊云TVP、出過書、創(chuàng)過業(yè)、國(guó)企4年互聯(lián)網(wǎng)6年10年前畢業(yè)加入宇宙行,工資不高、也不算太忙,業(yè)余堅(jiān)持研究技術(shù)和做自己想做的東西。4年后離開國(guó)企,加入永輝互聯(lián)網(wǎng)板塊的創(chuàng)業(yè)團(tuán)隊(duì),從開發(fā)、到架構(gòu)、到合伙人。一路過來,給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅(jiān)持下來,多思考、少抱怨、勤動(dòng)手,就很容易實(shí)現(xiàn)彎道超車!所以,不要問我現(xiàn)在干什么是否來得及。如果你看好一個(gè)事情,一定是堅(jiān)持了才能看到希望,而不是看到希望才去堅(jiān)持。相信我,只要堅(jiān)持下來,你一定比現(xiàn)在更好!如果你還沒什么方向,可以先關(guān)注我,這里會(huì)經(jīng)常分享一些前沿資訊,幫你積累彎道超車的資本。

          點(diǎn)擊領(lǐng)取2022最新10000T學(xué)習(xí)資料

          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美Ⅴ,亚州v,在线免费视频。 | 九九九九精品在线 | 乱伦片网站 | 韩国不卡一区二区 | 亚洲一级在线免费视频 |