2017-04-03 84 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]为空,