1

Android 不断报告我无法在手机上重现的用户崩溃。我可以找到似乎不正确的行:

cursor.moveToFirst();
elechs=cursor.getString(2);
elecls=cursor.getString(3);
gass=cursor.getString(4);
waters=cursor.getString(5);

cursor.close();

if (elechs.length()!=0){
  elechdb=Double.valueOf(elechs);
}
else {
  elechdb=0.0;
}

if (elecls.length()!=0){
  elecldb=Double.valueOf(elecls);}
else {
  elecldb=0.0;
}

if (gass.length()!=0){
  gasdb=Double.valueOf(gass);
}
else {
  gasdb=0.0;
}

if (waters.length()!=0){
  waterdb=Double.valueOf(waters);
}
else {
  waterdb=0.0;
}

elecldb=Double.valueOf(elecls);
gasdb=Double.valueOf(gass);
waterdb=Double.valueOf(waters);

如果我查看代码,它没有任何意义。

我想我忘了删除最后三行。首先我检查字符串。如果字符串为空,它将将该值存储为零。

如果单元格为空,不正确的最后三行也会尝试生成这会导致很多崩溃。但是不在我的机器上。

我相信不可能制作一个空单元格。

有谁知道为什么这个错误不会让我的手机崩溃?

4

2 回答 2

1

您最好的解决方案可能只是删除无论如何都不应该存在的有问题的行,最好在调用周围添加实际错误处理Double.valueOf(),以防输入完全错误(如果单元格为空,则可能存在不一致的行为,但如果它说“hello world”,一切都会崩溃),并发布更新。

于 2013-08-08T12:50:50.707 回答
0

由于用户收到 NumberFormatException,因此您应该捕获异常并在它发生时执行适当的操作。

if (elechs.length()!=0) {
   try {
       elechdb=Double.valueOf(elechs);
   } catch (NumberFormatException e) { 
       // Perform error handling
   }
}

如果用户收到 NullPointerException,您应该在检查字符串长度之前检查字符串是否为空。

如果数据是用户输入的,你应该同时做以上两个,以避免将来出现问题。

于 2013-08-08T12:56:38.907 回答