那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

try catch應該在for循環里面還是外面?

jf_ro2CN3Fa ? 來源:CSDN ? 2023-07-31 10:16 ? 次閱讀

1. 使用場景

為什么要把 使用場景 擺在第一個 ?

因為本身try catch 放在 for循環 外面 和里面 ,如果出現異常,產生的效果是不一樣的。

怎么用,就需要看好業務場景,去使用了。

① try catch 在 for 循環 外面

代碼示例 :

publicstaticvoidtryOutside(){
try{
for(intcount=1;count<=?5;?count++)?{
????????????if?(count?==?3)?{
????????????????//故意制造一下異常
????????????????int?num?=?1?/?0;
????????????}?else?{
????????????????System.out.println("count:"?+?count?+?"?業務正常執行");
????????????}
????????}
????}?catch?(Exception?e)?{
????????System.out.println("try?catch??在for?外面的情形,?出現了異常,for循環顯然被中斷");
????}
}

結果:

79362002-2ec9-11ee-815d-dac502259ad0.png

效果結論:

try catch 在 for 循環 外面 的時候, 如果 for循環過程中出現了異常, 那么for循環會終止。

② try catch 在 for 循環 里面

代碼示例 :

publicstaticvoidtryInside(){
for(intcount=1;count<=?5;?count++)?{
????????try?{
????????????if?(count?==?3)?{
????????????????//故意制造一下異常
????????????????int?num?=?1?/?0;
????????????}?else?{
????????????????System.out.println("count:"?+?count?+?"?業務正常執行");
????????????}
????????}?catch?(Exception?e)?{
????????????System.out.println("try?catch??在for?里面的情形,?出現了異常,for循環顯然繼續執行");
????????}
????}
}

結果:

79580e92-2ec9-11ee-815d-dac502259ad0.png

效果結論:

try catch 在 for 循環 里面 的時候, 如果 for循環過程中出現了異常,異常被catch抓掉,不影響for循環 繼續執行。

ps:

在面試的時候,如果真的連上面這個在外面在里面使用效果都沒說對,那,真的會去等通知了。

但是 之前不會的看官,看完這一篇, 肯定會了。

2. 性能

時間上, 其實算是無差別。

內存上, 如果沒出異常,其實也是無差別。

但是如果出現了異常, 那就要注意了。

注意點是什么 ?看代碼:

我們簡單用

Runtimeruntime=Runtime.getRuntime();
longmemory=runtime.freeMemory();

來統計一下內存消耗情況:

797624cc-2ec9-11ee-815d-dac502259ad0.png

結論:

也就是說, try catch 放在 for 循環里面 ,因為出現異常不會終止 for循環。所以如果真的存在大批量業務處理全是異常,有那么一定的內存消耗情況。

如果說代碼沒出錯的話, try catch 在 for 里面 和 外面 ,都是幾乎沒區別的。

為啥, 因為 異常try catch 其實一早編譯完就標記了 如果從哪兒(from)出現異常,會直接去到(to)的那行代碼去。

Exception table : 當前函數程序代碼編譯涉及到的異常;

type :異常類型;

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

from:表示 try-catch 的開始地址;

to:表示 try-catch 的結束地址;

7989fc9a-2ec9-11ee-815d-dac502259ad0.png

所以如果不考慮業出錯,是否終止循環, 這個try catch 放里放外沒啥區別。

3. 個人看法

其實就是看業務。我需要出現異常就終止循環的,就放外頭;

不需要終止循環,就搞里頭。

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





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19407

    瀏覽量

    231181
  • 異常中斷
    +關注

    關注

    0

    文章

    9

    瀏覽量

    1245

原文標題:面試官問我 ,try catch 應該在 for 循環里面還是外面?

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    為什么應該在SEPIC轉換器中使用耦合電感?

    為什么應該在SEPIC轉換器中使用耦合電感?
    發表于 02-06 06:58

    電壓跟隨器何時應該在負反饋上接電阻?

    請問: 1、電壓跟隨器何時應該在負反饋上接電阻? 2、單電源供電時,提供偏置的分壓電阻其阻值如何選擇? 3、綜合問題1和2,針對單電源供電的電壓跟隨器應用,是否需要增加負反饋電阻,以平衡(抵消)輸入偏置電流的影響。 注:+3.3V供電,目標OP器件OPA357。
    發表于 09-18 08:28

    ADS1281的SINC濾波器GROUP DELAY延時是多少?應該在哪看了?

    我在ADS1281的DATASHEET中看到FIR的GROUP DELAY 在線性情況下是30*1/fdata. 如果 我只有SINC,不用FIR,這時候的GROUP DELAY 濾波器延時是多少,應該在哪看了?
    發表于 12-03 06:36

    DAQmx配置是放在最外面循環外面還是里面

    大家好,我是第一次使用NI的采集卡,在配置DAQmx進行模擬輸入的時候,不知道是把DAQmx的配置放在最外面循環還是放在循環里面(我的程序
    發表于 06-19 22:17

    應該在NVS上安裝常規VDA嗎?

    之間存在很大差異。您是否會在所有卡上安裝帶有HDX 3D Pro的VDA,還是應該在NVS上安裝常規VDA?如果您有使用Remote PC + HDX 3d pro的經驗,請查看P1000和P2000
    發表于 09-26 15:28

    在Visual Studio中使用82357A應該在源代碼中導入哪些庫?

    親愛的專家,我是使用Visual Studio 2013的新手。現在我嘗試使用82357A GPIB與我的設備進行通信。我搜索谷歌,有關如何在Vb.net中使用82357A的信息很少。我應該在源代碼
    發表于 11-07 10:06

    請問ddr2匹配電阻應該在那里加

    我看了有些人的板在ddr2地址線加匹配電阻,數據線不加。有的人在數據線加匹配電阻地址線不加,到底應該在那里加的,是參考DDR芯片的手冊還是參考TMS320C6748的手冊來做?
    發表于 01-21 13:50

    請問我是否應該在差分對的導線上連接一個100歐姆的電阻?

    如果我使用電阻分壓器為Spartan 6的3.3V lVDS再生直流電平,我是否還應該在差分對的導線上連接一個100歐姆的電阻?非常感謝。以上來自于谷歌翻譯以下為原文If I use
    發表于 07-03 10:10

    h文件有何作用?應該在那兒包含h文件?

    h文件有何作用?h文件里應該有什么?h文件不應該有什么?應該在那兒包含h文件?
    發表于 07-15 09:36

    Sqlserver Try CatchCatch捕獲到錯誤重試一次的方法分享

    使用while重試一次不太好,如果try catch在游標里面,這樣的話每個游標記錄都要在try里面執行兩次。
    發表于 11-10 17:44

    stm32CubeIDE應該在哪里編輯makefile?

    你好我正在使用 stm32Cube IDE。我應該在哪里編輯 makefile?
    發表于 01-31 08:41

    ltc2344的驅動程序應該在哪里下載呢?

    ltc2344的驅動程序應該在哪里下載呢?
    發表于 12-01 08:21

    應該在VR Media Player中尋找什么?

    問題是:用戶應該在VR媒體播放器中尋找什么樣的質量和收益?對于經典視頻播放器,大多數人確切地知道他們在尋找什么,因為他們具有測試各種軟件和應用程序的長期經驗。
    的頭像 發表于 07-06 16:34 ?2464次閱讀

    公司這套架構統一處理try...catch真香!

    軟件開發springboot項目過程中,不可避免的需要處理各種異常,spring mvc 架構中各層會出現大量的try {...} catch {...} finally {...} 代碼塊,不僅
    的頭像 發表于 02-27 10:47 ?515次閱讀

    使用try-catch捕獲異常會影響性能嗎?

    “BB 不如 show code,看到沒, 老王,我把 try-catch 從 for 循環里面提出來跟在for循環里面做個對比跑一下,你猜
    的頭像 發表于 04-01 11:08 ?1281次閱讀
    真人百家乐官网| 太阳城娱乐总站| 网上百家乐辅助软件| 玉龙| 现金棋牌评测网| 大发888娱乐城3403| 百家乐专打单跳投注法| 菲律宾百家乐娱乐网| 百家乐视频下载| 百家乐现金网平台| 24山天机申山寅向择日| G3百家乐官网的玩法技巧和规则| 百家乐官网网络赌城| 蓝盾百家乐官网庄家利润分| 水果机游戏下载| 澳门美高梅赌场| A8百家乐官网现金网| 崇仁县| 民权县| 百家乐官网博赌场| 百家乐投注方法新版| 金木棉百家乐网络破解| 百家乐具体怎么收费的| 大发888皇家赌场| 涿鹿县| 乐天堂百家乐官网娱乐网| 属狗的和虎的做生意好吗| 新澳门百家乐软件下载| 永利高投注网哪个好| E乐博网址| 澳门百家乐官网网上直赌| 闲和庄百家乐官网的玩法技巧和规则| 百家乐官网翻天| 南京百家乐赌博现场被抓| 百家乐高手和勒威| 大发888论坛| 正定县| 百家乐等投注网改单| 足球投注技巧| 百家乐官网百博亚洲| 威尼斯人娱乐城代理佣金|