2014-04-23 52 views
0

我想爲我的PhoneDirectory程序創建一個addChangeEntry方法,它的功能是搜索並向目錄添加新條目,如果名稱傳遞不存在或者聯繫人已存在,更新其號碼。我在PhoneDirectory程序中如何處理NullPointerException

我不斷收到NullPointerExceptions,因爲我相信我的x值等於null。學習完這些之後,我試圖捕獲並處理異常,但我仍然收到NullPointerExceptions。

addChangeEntry代碼:

public String addChangeEntry(String name, String telno) { 
    for (DirectoryEntry x : theDirectory) { 
     try { 
      if (x == null) { 
       Logger logger = Logger.getLogger(ArrayPhoneDirectory.class.getName()); 
       logger.log(Level.WARNING, "User with no name found"); 
       continue; 
      } 

      else if (x.getName().equals(name)) { 
      x.setNumber(telno); 
      return x.getNumber(); 
      } 

      add(name, telno); 
     } 
      catch (Exception ex) { 
     System.out.println("Exception found"); 
     throw ex; 
      } 
     } 
    return null; 

} 

如何處理這個異常任何幫助將不勝感激,因爲它是目前停止我的程序進行測試。

+0

不允許'theDirectory'爲null – Brian

+0

@staticx我會在哪裏聲明? –

+0

你初始化了'theDirectory'嗎?因爲如果一個對象爲null,你應該有什麼工作,但是如果你沒有初始化這個對象,你將會有一個錯誤 – Snox

回答

0

如果你的假設是真的,它的約爲x爲空。那麼這可能是你的問題,在發現異常之後,你把它扔到throw ex;這就是爲什麼你還會這樣。如果您不希望程序停止,只需將其從代碼中移除即可。

+0

我現在有一種感覺可能是這個目錄是空的,因爲在我的for-loop中發生的所有事情都是它爲用戶搜索目錄數組,沒有,導致例外。這聽起來可能嗎? –

+0

那麼你應該首先檢查'theDirectory'或者將'try'移動到'for'前面。 – richard

相關問題