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

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

          共 5537字,需瀏覽 12分鐘

           ·

          2024-08-16 07:38

          閱讀本文大概需要 4 分鐘。

          來自:blog.csdn.net/qq_35387940/article/details/128406626

          推薦一個程序員編程資料站:
          http://cxyroad.com

          2024年IDEA最新激活方法
          后臺回復(fù):激活碼

          CSDN免登錄復(fù)制代碼插件下載:
          CSDN復(fù)制插件

          以下是正文。




          前言

          有個老哥昨天被面試官欺負了,但是是被這個問題(標題)欺負的?
          其實是個比較基礎(chǔ)的問題,只要有了解過,敘述是非常簡單OK的。

          正文

          首先 , 話說在前頭,
          沒有什么 在里面 好 和在外面好  或者 不好的 一說。
          本篇文章內(nèi)容:
          1. 使用場景
          2. 性能分析
          3. 個人看法

          使用場景

          為什么要把 使用場景 擺在第一個 ?
          因為本身try catch 放在 for循環(huán) 外面 和里面 ,如果出現(xiàn)異常,產(chǎn)生的效果是不一樣的。
          怎么用,就需要看好業(yè)務(wù)場景,去使用了。

          ① 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é)果:
          效果結(jié)論:
          try  catch  在 for 循環(huán) 外面 的時候, 如果 for循環(huán)過程中出現(xiàn)了異常, 那么for循環(huán)會終止。

          ② 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é)果:
          效果結(jié)論:
          try  catch  在 for 循環(huán) 里面 的時候, 如果 for循環(huán)過程中出現(xiàn)了異常,異常被catch抓掉,不影響for循環(huán) 繼續(xù)執(zhí)行。
          ps:
          在面試的時候,如果真的連上面這個在外面在里面使用效果都沒說對,那,真的會去等通知了。
          但是 之前不會的看官,看完這一篇, 肯定會了。

          性能

          時間上, 其實算是無差別。
          內(nèi)存上, 如果沒出異常,其實也是無差別。
          但是如果出現(xiàn)了異常, 那就要注意了。
          注意點是什么 ?看代碼:
          我們簡單用
             
          Runtime runtime = Runtime.getRuntime();  
          long memory = runtime.freeMemory();  
          來統(tǒng)計一下內(nèi)存消耗情況:
          結(jié)論:
          也就是說, try catch 放在 for 循環(huán)里面 ,因為出現(xiàn)異常不會終止 for循環(huán)。所以如果真的存在大批量業(yè)務(wù)處理全是異常,有那么一定的內(nèi)存消耗情況。
          如果說代碼沒出錯的話, try catch 在 for 里面 和 外面 ,都是幾乎沒區(qū)別的。
          為啥, 因為 異常try catch 其實一早編譯完就標記了 如果從哪兒(from)出現(xiàn)異常,會直接去到(to)的那行代碼去。
          • Exception table : 當前函數(shù)程序代碼編譯涉及到的異常;
          • type :異常類型;
          • target:表示異常的處理起始位;
          • from:表示 try-catch 的開始地址;
          • to:表示 try-catch 的結(jié)束地址;
          所以如果不考慮業(yè)出錯,是否終止循環(huán), 這個try catch 放里放外沒啥區(qū)別。

          3. 個人看法

          其實就是看業(yè)務(wù)。我需要出現(xiàn)異常就終止循環(huán)的,就放外頭;
          不需要終止循環(huán),就搞里頭。
          但是要注意一點就是,別在for循環(huán)里面去 查庫調(diào)用第三方啥的,這些操作,如果必要,需要慎重考慮了。(別什么都搞里頭!!!)
          <END>

          推薦閱讀:

          SpringBoot異步接口實現(xiàn):提高系統(tǒng)的吞吐量

          實用指南:解決 SpringBoot 多實例內(nèi)存不足問題

               
          程序員在線工具站:cxytools.com

          推薦一個自己寫的工具站:http://cxytools.com,專為程序員設(shè)計,包括時間日期、JSON處理、SQL格式化、隨機字符串生成、UUID生成、文本Hash...等功能,提升開發(fā)效率。

          ?戳閱讀原文直達!                                  朕已閱 

          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  视频一区二 | www.欧美一区 | 操逼视频。| 狠狠躁日日躁 | 91麻豆精品国产91久久久 |