如何处理错误号格式异常:对于输入字符串:“”

时间:2016-03-04 07:20:12

标签: java

我正在用一种形式做一个简单的插入。

  1. no_text& no_text_external从下拉列表中选择
  2. 我正在保存no_text&的id另一个表中的no_text_external是
  3.   

    dbname_m_db

    并希望再次查看。所以我正在进行4次测试

      

    test1:插入no_text

         

    test2:插入no_text_external

         

    test3:插入no_text& no_text_external

         

    test4:不插入两者

    所以结果是,只有test3成功查看它。而其他3返回错误号格式异常:对于输入字符串:“”。我不知道过滤它的最佳方法。这里是我工作的代码。有什么想法吗?

        public void getDataById(Connection con){
    
        try{
            ps = con.createStatement();
    
            rs = ps.executeQuery("SELECT * FROM "+ dbname_m_db +" WHERE id_m_db ='"+ this.getId_m_db() +"' AND status_data ='1'");
    
            while (rs.next()) {
                this.setNo_text(rs.getString("no_text"));
                this.setNo_text_external(rs.getString("no_text_external"));
            }
                int int_no_text = Integer.valueOf(this.getNo_text());
                int int_no_text_external = Integer.valueOf(this.getNo_text_external());
                this.setNo_text_value(au.getTextById(con, int_no_text));
                this.setNo_text_external_value(au.getTextExternalById(con, int_no_text_external));
    
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    

2 个答案:

答案 0 :(得分:1)

为了处理NumberFormatException错误,您应该在执行String之前验证Integer.valueOf()

您可以验证字符串是否为空:

int int_no_text;

if (!this.getNo_text().isEmpty) {
    int_no_text = Integer.valueOf(this.getNo_text());
}

老实说,我并不是真的喜欢这种方法,因为一个人既不验证字符串是否为null,或者它是否包含,实际上是一个整数。

因此,可以使用一个非常好的实用工具类NumberUtils,并验证我们是否存在数字:

int int_no_text;

if (NumberUtils.isNumber(this.getNo_text())) {
    int_no_text = Integer.valueOf(this.getNo_text());
}

基本上,这样就可以检查字符串是否是有效的Java编号,因此null和空/空字符串将返回false。

答案 1 :(得分:0)

当您从表中获取整数值时,您似乎正在传递一个空字符串。我会检查以确保您在将其转换为int之前从表中获得预期返回