2012-05-19 29 views
-1

我有一種情況,我可能遇到可能的空,我不希望我的程序崩潰。它只發生在一小部分用戶身上,我不完全確定爲什麼,但我知道正在做這件事的代碼段。基本上isAchieved()是一個檢查應該返回一個布爾值,但在少數情況下它返回一個空值。這是scoreloop庫的一部分,我懷疑這個bug可能與他們的代碼有關。避免可能的空在Android中

而不是強制關閉並退出程序是否有一種方法來檢查這個值是否會返回一個null,如果是這種情況,只需跳過這段代碼?

if (_achievements[ltc].isAchieved()) { 
    // Do stuff for 99.9% of users here, but skip if .isAchieved() would force close 
} 
+2

捕捉異常? (不建議捕捉您似乎知道的運行時異常,但它是一個選項)您也可以執行if語句。即「如果爲空,不要」。 – keyser

回答

1
 boolean checker=false; 
     try{ 
      checker=_achievements[ltc].isAchieved(); 
     } 
     catch(NullPointerException e){ 
     } 
     if (checker) { 
      //content 
     } 

你想這樣做?

+0

那不會給我一個檢查器的NullPointerException?我無法檢查它,因爲它只發生在如此少量的用戶身上,我無法重現錯誤。 – clayton33

+1

如果函數實際返回null,它不會給出異常。除此之外。否則,你必須使用try catch。 – Niranjan

+0

是的,我用try/catch方法去了,謝謝。 – clayton33