2017-07-07 49 views
0

我試圖從一個HashMap獲取的值寫入文件:BufferedWriter將拋出NPE

public writeToFile(HapshMap<String,String> , String fileName) { 

    File myFile = new File(filePath); 
    BufferedWriter bufferedWriter = null; 
    Writer writer = new FileWriter(myFile,false); 
    bufferedWriter = new BufferedWriter(writer); 

    String paramsValue = params.get("NAME"); 
    bufferedWriter.write(paramsValue); 
} 

在上面的代碼中,關鍵的「NAME」是不存在的HashMap中。 它是拋NPE。任何人都可以提出什麼可以做,爲什麼NPE被拋出?

+1

我的猜測是'paramsValue'是'null'和調用'寫()'很嗆人就可以了。 –

+2

什麼是空 - 顯示您的堆棧跟蹤 –

+0

歡迎來到SO。把你的代碼放在try-catch結構中,並在catch塊中打印堆棧跟蹤。如果您使用調試進行編譯,則會看到引發異常的行號。有關更多詳細信息,請參見[this](https://stackoverflow.com/q/3988788/2775450)。 – jeff6times7

回答

0

BufferedWriter在你要求它在某處寫入null時會拋出NPE。

這是您必須瞭解和處理的情況。例如,對於一些衆所周知的字符串,表示空虛替換空值:

Object nvl(Object value, Object defaultValue) { 
    return value != null ? value : defaultValue; 
} 
<...> 
String value = nvl(map.get("Name"), ""); // using empty string instead of null 
writer.write(value); 
+0

您應該重命名變量'default',因爲這是一個關鍵字。 –

+0

@MCEmperor,是的,做到了。 –

+0

是的,這是真的。當寫入null時,BufferedWriter將拋出一個異常。 –