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

          面試官問(wèn)我 ,try catch 應(yīng)該在 for 循環(huán)里面還是外面?

          共 4837字,需瀏覽 10分鐘

           ·

          2024-03-21 00:30

          點(diǎn)擊關(guān)注公眾號(hào):互聯(lián)網(wǎng)架構(gòu)師,后臺(tái)回復(fù)   2T 獲取 2TB 學(xué)習(xí)資源! 上一篇:2T架構(gòu)師學(xué)習(xí)資料干貨分享 大家好,我是互聯(lián)網(wǎng)架構(gòu)師!
              
                  前言
                
              

          有個(gè)老哥昨天被面試官欺負(fù)了,但是是被這個(gè)問(wèn)題(標(biāo)題)欺負(fù)的?

          其實(shí)是個(gè)比較基礎(chǔ)的問(wèn)題,只要有了解過(guò),敘述是非常簡(jiǎn)單OK的。 0c6ad333cdccd53d9f362a89634ee0ea.webp

          正文


          首先 , 話說(shuō)在前頭,

          沒(méi)有什么 在里面 好 和在外面好  或者 不好的 一說(shuō)。

          本篇文章內(nèi)容:

          1. 使用場(chǎng)景
          2. 性能分析
          3. 個(gè)人看法


          1. 使用場(chǎng)景


          為什么要把 使用場(chǎng)景 擺在第一個(gè) ? 因?yàn)楸旧韙ry catch 放在 for循環(huán) 外面 和里面 ,如果出現(xiàn)異常,產(chǎn)生的效果是不一樣的。 怎么用,就需要看好業(yè)務(wù)場(chǎng)景,去使用了。
          ① try  catch  在 for 循環(huán) 外面
          代碼示例 :
                public static void tryOutside() {  
              try {  
                  for (int count = 1; count <= 5; count++) {  
                      if (count == 3) {  
                          //故意制造一下異常  
                          int num = 1 / 0;  
                      } else {  
                          System.out.println("count:" + count + " 業(yè)務(wù)正常執(zhí)行");  
                      }  
                  }  
              } catch (Exception e) {  
                  System.out.println("try catch  在for 外面的情形, 出現(xiàn)了異常,for循環(huán)顯然被中斷");  
              }  
          }  
          結(jié)果: 3a19dd80f0d50d4f12adc452f0253872.webp

          效果結(jié)論:

          try  catch  在 for 循環(huán) 外面 的時(shí)候, 如果 for循環(huán)過(guò)程中出現(xiàn)了異常, 那么for循環(huán)會(huì)終止。
          ② try  catch  在 for 循環(huán) 里面
          代碼示例 :
                public static void tryInside() {  
            
              for (int count = 1; count <= 5; count++) {  
                  try {  
                      if (count == 3) {  
                          //故意制造一下異常  
                          int num = 1 / 0;  
                      } else {  
                          System.out.println("count:" + count + " 業(yè)務(wù)正常執(zhí)行");  
                      }  
                  } catch (Exception e) {  
                      System.out.println("try catch  在for 里面的情形, 出現(xiàn)了異常,for循環(huán)顯然繼續(xù)執(zhí)行");  
                  }  
              }  
          }  
          結(jié)果: f4a50c440ef56b1c33493bc787c5ad52.webp效果結(jié)論:
          try  catch  在 for 循環(huán) 里面 的時(shí)候, 如果 for循環(huán)過(guò)程中出現(xiàn)了異常,異常被catch抓掉,不影響for循環(huán) 繼續(xù)執(zhí)行。
          ps: 在面試的時(shí)候,如果真的連上面這個(gè)在外面在里面使用效果都沒(méi)說(shuō)對(duì),那,真的會(huì)去等通知了。 但是 之前不會(huì)的看官,看完這一篇, 肯定會(huì)了。


          2. 性能


          時(shí)間上, 其實(shí)算是無(wú)差別。

          內(nèi)存上, 如果沒(méi)出異常,其實(shí)也是無(wú)差別。

          但是如果出現(xiàn)了異常, 那就要注意了。

          注意點(diǎn)是什么 ? 看代碼:

          我們簡(jiǎn)單用

                Runtime runtime = Runtime.getRuntime();  
          long memory = runtime.freeMemory();  
          來(lái)統(tǒng)計(jì)一下內(nèi)存消耗情況: bb045d8162d8d8f77855a34291ea18eb.webp結(jié)論:
          也就是說(shuō), try catch 放在 for 循環(huán)里面 ,因?yàn)槌霈F(xiàn)異常不會(huì)終止 for循環(huán)。所以如果真的存在大批量業(yè)務(wù)處理全是異常,有那么一定的內(nèi)存消耗情況。
          如果說(shuō)代碼沒(méi)出錯(cuò)的話, try catch 在 for 里面 和 外面 ,都是幾乎沒(méi)區(qū)別的。 為啥, 因?yàn)?異常try catch 其實(shí)一早編譯完就標(biāo)記了 如果從哪兒(from)出現(xiàn)異常,會(huì)直接去到(to)的那行代碼去。
          • Exception table  : 當(dāng)前函數(shù)程序代碼編譯涉及到的異常;

          • type  :異常類型;

          • target :表示異常的處理起始位;

          • from :表示 try-catch 的開(kāi)始地址;

          • to :表示 try-catch 的結(jié)束地址;

          67265c4c902710bab8debf73d94f4795.webp

          所以如果不考慮業(yè)出錯(cuò),是否終止循環(huán), 這個(gè)try catch 放里放外沒(méi)啥區(qū)別。

          3. 個(gè)人看法

          其實(shí)就是看業(yè)務(wù)。我需要出現(xiàn)異常就終止循環(huán)的,就放外頭;

          不需要終止循環(huán),就搞里頭。

          但是要注意一點(diǎn)就是,別在for循環(huán)里面去 查庫(kù)調(diào)用第三方啥的,這些操作,如果必要,需要慎重考慮了。(別什么都搞里頭!!!)

                轉(zhuǎn)自:blog.csdn.net/qq_35387940/article/details/128406626
                
          最后,關(guān)注公眾號(hào)互聯(lián)網(wǎng)架構(gòu)師,在后臺(tái)回復(fù):2T,可以獲取我整理的 Java 系列面試題和答案,非常齊全。


          正文結(jié)束


          推薦閱讀 ↓↓↓

          1.JetBrains 如何看待自己的軟件在中國(guó)被頻繁破解?

          2.無(wú)意中發(fā)現(xiàn)了一位清華妹子的資料庫(kù)!

          3.程序員一般可以從什么平臺(tái)接私活?

          4.40歲,剛被裁,想說(shuō)點(diǎn)啥。

          5.為什么國(guó)內(nèi) 996 干不過(guò)國(guó)外的 955呢?

          6.中國(guó)的鐵路訂票系統(tǒng)在世界上屬于什么水平?                        

          7.15張圖看懂瞎忙和高效的區(qū)別!

          88338f78f4f05d28c27d676250c0a2cd.webp
          瀏覽 75
          點(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>
                  天天色天 | 日本狠狠干 | 色 高清在线 | 男女日皮视频免费 | 自拍超碰 |