2013-11-21 85 views
1

任何想法如何处理java.lang.IllegalArgumentException?这个异常将如何显示?那是因为回报是空的吗?Java返回Double异常(java.lang.IllegalArgumentException)

下面是一张屏幕截图,显示了我从代码中得到的错误。

enter image description here

+1

你得到一个'null'吗? –

+0

hmm,String.valueOf()返回一个字符串。即使String.valueOf((Object)null)也返回“null”不为null。除非对象重写toString做一些有趣的事情,否则我不确定比较null是你想要的。 – bcorso

+0

@ElliottFrisch,是的,我的价值为零。如果值不为null,则异常不会抛出。你有什么想法吗?谢谢。 – Chang

回答

0

你确定你的列名是double类型?如果你确认。我认为你可以重新启动eclipse.may,你可以解决这个问题。

+0

他有一个检查右上方,以确保'col'是一个双重类型。另外,他的IDE很可能会导致运行时错误。 – Eric

+0

嗨先生,我认为不应该因为重启eclipse才会解决,反正我也试过。我的问题是,当检索double作为空值,我声明它为空,然后异常将抛出..但如果它不是空值,那就没事了。当我将数据类型声明为double并且该值为null时,您是否有任何想法处理我的情况,然后可以通过另一种方式处理,而不是由异常命中?谢谢 – Chang

+0

我know.i也try.it工作时,我们写这样的代码︰Double d = null; String.valueOf(d);所以,我认为问题是“col.getColumnName()”,你可以显示值?调试这个code.output这个值,我想你可以得到答案。首先,当param为null时,可以运行String.valueOf()方法。可能是你必须改变你的方法,因为这个参数是无效的。如果你尝试失败了。告诉我,我会想。 – PoWen

1

尝试打破语句,它会更容易追查null,也可能要检查Double为null而不是Double的String。

String colName=col.getColnmnname(); 
Double dv = sqlRow.getDoubleValue(colName); 

if(dv!=null) 
{ 
    ... 

编辑,也许是这样的:

if(sqlRow!=null) 
{ 
    try 
    { 
     String colName=col.getColumnname(); 
     Double dv = sqlRow.getDoubleValue(colName); 
     if(dv!=null) 
     { 
      ... 
     } 
    } 
    catch (SQLException e) 
    { 
     //handle the error 
    } 
} 
+0

嗨Greg先生,我试过了你的解决方案,当colValue不为null时工作,但当colValue为null时不工作。任何建议可以给我如何处理这2种不同的情况? – Chang

+0

雅,最后我使用catch异常来解决我的问题..不知道这是否是一个正确的做法。无论如何,感谢您的建议。 – Chang

1

我所知道的处理这种情况(使用原始列类型和JDBC结果),最好的办法是与ResultSetwasNull方法。

public static Double readDoubleValue(ResultSet rs, String columnName) { 
    try { 
    Double val = rs.getDouble(columnName); 
    if (! rs.wasNull()) { 
     return val; 
    } 
    } catch (SQLException e) { 
    } 
    return null; 
} 
+0

雅,在最后我使用catch异常来解决我的问题..不知道这是一个正确的做法与否。无论如何,感谢您的建议。 – Chang

相关问题