2017-04-03 113 views
-1

在我的情況下,results[i]可能不存在於HBase表中,所以使用getTimestamp()得到results[i]'s時間戳可能會導致異常。 HBase中的時間戳是一個很長的變量,所以下面兩種方法我嘗試不了。如何判斷長變量是否爲空,或者if()是否包含Java中的異常判斷?

if((results[i].listCells().get(0).getTimestamp()) != null){ 
    rowkeytime = results[i].listCells().get(0).getTimestamp(); 
} 

if(((Long)(results[i].listCells().get(0).getTimestamp())) != null){ 
    rowkeytime = results[i].listCells().get(0).getTimestamp(); 
} 

我想知道在Java中是否有類似下面的用法?

if ((results[i].listCells().get(0).getTimestamp()) throws an exception){ 
    rowkeytime = results[i].listCells().get(0).getTimestamp(); 
} 
+4

了'拋出exception'正在與'try'-'catch' ... –

+1

你可能需要檢查'不用彷徨(0)'部分是'!= null'(或者'results [i]')。時間戳是一個'long'變量,它不能是'null'('null'用於對象,而不是基本類型變量''long') – Oneiros

+0

爲什麼使用'results [i] .listCells()。 get(0).getTimestamp()'來檢查'results [i]'是否存在?你在迭代所有可能的'我'嗎?爲什麼你不能確定正確的指示範圍? –

回答

1

使用try-catch來處理異常:

try { 
    results[i].listCells().get(0).getTimestamp(); 
} catch (NullPointerException e) { 
    // Do something if an exception is thrown 
} 

在您的情況可能會更好事先檢查你的輸入。

if (results != null && results.length >= i - 1) { 
    results[i].listCells().get(0).getTimestamp(); 
    // You may want to add additional checks for 
    // the return values of listCells() and get(0) 
} else { 
    // Do something else 
} 
+1

這不是一個好主意'catch(異常等...',而是捕獲更具體的異常。 –

+0

是的,我更新了示例 –

0

...在我的情況,結果[I]可能不存在...

是你的意思結果[I]可以爲空則將是很好的檢查參考是否指向空,或者不是,

這將做爲:

results[i] == null 

返回真的是你的結果[i]爲空,

相關問題