2014-04-04 25 views
0

此二者的是更好地使用是更好地檢查錯誤或進行異常

if(object != null) 
... 
else 
... 

try{ 
    ... 
} catch(NullPointerException exception){ 
    ... 
} 

在我校的一些老師比較喜歡第二個,但我不確定這是一個好主意。有人可以告訴哪個使用,爲什麼?提前致謝。

+7

不,從不捕獲'NullPointerException'。預防總是更好。 –

+2

[請勿使用例外進行流量控制](http://blogs.msdn.com/b/chris.green/archive/2008/02/11/don-t-use-exceptions-to-control-application- flow.aspx) – mellamokb

+1

可能的重複[哪個更好/更高效:檢查錯誤值或捕獲Java中的異常](http://stackoverflow.com/questions/1306827/which-is-better-more-efficient-check - 因爲壞值,或捕撈的例外 - 在-JAVA) –

回答

2

表現不是這裏最相關的關注點。問題是,兩者中的哪一個導致更易讀/可維護/可測試的程序。您可以稍後擔心性能。

一般來說,不要使用例外進行流量控制。他們實際上是一個非本地的goto,這使得程序更難以閱讀和遵循。因此,它們應該保留用於特殊情況。如果你不能使用try-catch模塊進行流量控制,請不要。您的程序將更具可讀性和可維護性。

「正確」的方式來處理這種情況是

if(object != null) 
... 
else 
... 

可以避開檢查對象是不是null,不爲空,如果有,保證從的someMethod的返回值不爲空和斷言不是空的。

但的確,例外情況在當地非常昂貴。他們是否會影響你的程序的表現完全是另一個問題。但是正確使用,例外通常不是瓶頸(當應用程序崩潰時,誰關心性能?)

-1

我會檢查錯誤。異常佔用更多資源。然而,如果這個對象很少是空的,那就使用一個異常,因爲它不應該爲空。

相關問題