当前位置:编程学习 > wap >>

android测试中,出现空指针怎么办?如何防止空指针错误。

这几天开始学习android的事务操作,可是在测试的过程中,总是出现空指针错误。如下是代码和测试的结果。
package com.Liray.db;

import java.util.List;

import android.test.AndroidTestCase;
import android.util.Log;

import com.Liray.domain.Person;
import com.Liray.service.DBOpenHelper;
import com.Liray.service.PersonService;


public class PersonServiceTest extends AndroidTestCase {
private static final String TAG = "PersonServiceTest";

public void testCreateDB() throws Throwable{
DBOpenHelper dbOpenHelper = new DBOpenHelper(this.getContext());
dbOpenHelper.getWritableDatabase();//第一次调用该方法就会创建数据库
}

public void testSave() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Person person = new Person();
person.setName("xiaoxiao");
personService.save(person);

person = new Person();
person.setName("zhangliming");
personService.save(person);

person = new Person();
person.setName("libaobao");
personService.save(person);

person = new Person();
person.setName("taobao");
personService.save(person);
}

public void testUpate() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
person.setName("lili");
personService.update(person);
}

public void testDelete() throws Throwable{
PersonService personService = new PersonService(this.getContext());
personService.delete(1);
}

public void testFind() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
Log.i(TAG, person.toString());
}

public void testGetScrollData() throws Throwable{
PersonService personService = new PersonService(this.getContext());
List<Person> persons = personService.getScrollData(0, 3);
for(Person person : persons){
Log.i(TAG, person.toString());
}
}

public void testGetCount() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Log.i(TAG, personService.getCount()+"");
}
}


Android 测试 空指针 --------------------编程问答-------------------- 一个是好的习惯,比较可能出现异常的地方,在使用对象前都做 nill的判断。

另外就是测试了。测试之后发现bug,修复。 --------------------编程问答--------------------
引用 1 楼 wuyu637 的回复:
一个是好的习惯,比较可能出现异常的地方,在使用对象前都做 nill的判断。

另外就是测试了。测试之后发现bug,修复。


楼上说的是,如果你要避免程序崩溃,就加try{}catch(Exception e){}吧。 --------------------编程问答--------------------
引用 1 楼 wuyu637 的回复:
一个是好的习惯,比较可能出现异常的地方,在使用对象前都做 nill的判断。

另外就是测试了。测试之后发现bug,修复。

请问我上面的那个程序有什么解决方法不?我才刚学呢?改了好久了都不会。求赐教~~~嘿嘿 --------------------编程问答--------------------
引用 3 楼 u010573183 的回复:
Quote: 引用 1 楼 wuyu637 的回复:

一个是好的习惯,比较可能出现异常的地方,在使用对象前都做 nill的判断。

另外就是测试了。测试之后发现bug,修复。

请问我上面的那个程序有什么解决方法不?我才刚学呢?改了好久了都不会。求赐教~~~嘿嘿


出现空指针都是个人忘了实例化对象的问题,
你看你PersonServiceTest的第43行,
绝对有一个对象忘了初始化。
--------------------编程问答-------------------- 一个是忘记实例化初始化的情况,这个是超级新手可能会有的问题,一般写了一段时间不会范这类问题,很多情况下是初始化失败或者对象被意外回收或者意外重新赋值 --------------------编程问答-------------------- 有可能Person person = personService.find(1);得到的person为null。
可以打印出来看看 --------------------编程问答-------------------- 你也是在校大学生吗,是哪个学校的? --------------------编程问答--------------------
引用 5 楼 wuyu637 的回复:
一个是忘记实例化初始化的情况,这个是超级新手可能会有的问题,一般写了一段时间不会范这类问题,很多情况下是初始化失败或者对象被意外回收或者意外重新赋值


引用 5 楼 wuyu637 的回复:
一个是忘记实例化初始化的情况,这个是超级新手可能会有的问题,一般写了一段时间不会范这类问题,很多情况下是初始化失败或者对象被意外回收或者意外重新赋值

是的    刚学不久   老是有空指针错误    很无语了     --------------------编程问答--------------------
引用 7 楼 shishenfengbao 的回复:
你也是在校大学生吗,是哪个学校的?

是的呀   湖南科技学院的   你呢? --------------------编程问答--------------------
引用 6 楼 hotkarriver 的回复:
有可能Person person = personService.find(1);得到的person为null。
可以打印出来看看

问题也不知怎么的被我乱弄一通弄好了呢   嘿嘿 --------------------编程问答-------------------- 很简单啊,在有可能出现空指针的地方都要判断,别嫌麻烦 --------------------编程问答--------------------
引用 9 楼 u010573183 的回复:
Quote: 引用 7 楼 shishenfengbao 的回复:

你也是在校大学生吗,是哪个学校的?

是的呀   湖南科技学院的   你呢?

也是快大三了,上海对外经贸,正在自学
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,