2015-05-05 23 views
2

我想知道如果我在while循環中使用一個或兩個try catch,這是否會影響性能?如果在Java中循環使用,try catch子句會影響性能嗎?

如下代碼示例:

try { 
    // some code 
    .... 

    try { 
     // some code 
     ... 
    } catch(Exception e) { 
     if(e is not catchable) { 
      //throw it as MyException(e); 
     } 
    } 

    // some code 
    ... 

} catch(Exception e) { 
    if(e is my Exception) { 
     then do somthing 
     ... 
    } else { // is other Exception 
     if(e is not catchable) { 
      then stop the loop 
     } 
     // else catch it and continue 
    } 
} 

if else如果使用的是什麼,而不是,那麼哪一個是好主意嗎?

如果有人知道請求,請告訴我它是否會影響性能,如果是,那麼爲什麼。

我的問題也許是別人問過的,但我也想知道if-else如果比try-catch更好。

編輯:

我知道,如果再拋出Exception追趕它需要一些時間,但怎麼樣,如果程序進入絲毫也不例外突出部分,如:

// some code 
     .... 
// some code 
     .... 
// some code 
     .... 

謝謝!

+1

嘗試塊本身不會影響性能。捕捉異常會影響性能。所以回答取決於循環內部拋出異常的頻率。 – mkrakhin

+0

谷歌是你的朋友。請檢查這一個 - http://www.precisejava.com/javaperf/j2se/Exceptions.htm – Keerthivasan

+1

忘記性能:這段代碼看起來不可讀,這是一個更糟糕的事情。硬件升級後性能會提高;另一方面,人類的大腦並沒有得到升級(至少還沒有升級),所以可讀性差的問題一直存在。測試這些代碼也是一場噩夢。 – dasblinkenlight

回答

1

Try-catch塊不影響性能本身,但每次拋出異常時都會執行catch塊內的代碼,這可能會影響permformance。

+0

請參閱[answer](http://stackoverflow.com/a/8621779/4726707),其中討論'try-catch'中的開銷 – Blip