我有一个DB。可能有空字段。 当我尝试使用光标从空字段获取值时,我得到NullPointerExeption。
我找到了try-catch的解决方案:
try {
subject.setName(cursor.getString(2));
} catch (NullPointerException e) {}
try {
subject.setTrainer(cursor.getString(3));
} catch (NullPointerException e) {}
try {
subject.setLocation(cursor.getString(4));
} catch (NullPointerException e) {}
但我不喜欢它。可以有更有吸引力的解决方案吗?
答案 0 :(得分:0)
if (cursor != null)
{
subject.setName(cursor.getString(2));
subject.setTrainer(cursor.getString(3));
subject.setLocation(cursor.getString(4));
}
这会有用吗?检查以确保光标不是先为空?
答案 1 :(得分:0)
像这样检查空值:
if (cursor != null) {//if cursor can achieve null value. I don't know your code before
String str2 = cursor.getString(2);
if (str2 != null) {
//...
subject.setName(str2);
}
}
答案 2 :(得分:0)
如果游标对象为null,则它将给出空指针异常。如果对象不为null,则可以检查对象参数是空还是null。通过这种方式,你可以做到。
if(cursor != null) {
// cursors argument you can check here.
if(cursor.getString(2) != null) {
subject.setName(cursor.getString(2));
}
---
---
}
答案 3 :(得分:0)
或者:
subject
为空,cursor
为空,或subject.setName()
将抛出NullPointerException
。根据您提供的少量信息,无法说出哪些信息,但堆栈跟踪会告诉您。在没有try/catch
的情况下,很容易防御任何这些条件。
答案 4 :(得分:0)
您可以在调用 getString(index)之前检查 null 值。
if( !cursor.isNull(2) ){
subject.setName(cursor.getString(2));
}
有关详细信息,请查看API here。