踩过的坑:java.lang.NumberFormatException:For input String:“section”

首先看到这个错误我就第一时间想到是传参和Controller里的数据类型不一样导致的数据转换异常,但是我发现改了类型之后依然报数据转换异常! 重点是"section"这个字段并不是我的参数,而是数据库中的一个字段,数据库中类型为Integer,但是在反向生成的时候mybatisPlus这个傻逼工具给我加上了" "号,把引号去掉完美得一批!
Controller:
在这里插入图片描述
在这里插入图片描述
把引号去掉
在这里插入图片描述
测试
在这里插入图片描述
完美!~

### java.lang.NumberFormatException 异常原因 `java.lang.NumberFormatException` 是 Java 中常见的运行时异常之一。当尝试将不符合预期格式的字符串转换为数值类型时会抛出此异常[^1]。 例如,在使用 `Integer.parseInt(String s)` 方法解析整数时,如果输入的字符串不是有效的十进制表示形式,则会触发该异常。同样地,其他数值类型的解析方法也会因类似的非法输入而引发相同的问题[^2]。 ```java // 这是一个典型的 NumberFormatException 场景 String invalidNumber = "abc"; int number = Integer.parseInt(invalidNumber); // 将抛出 NumberFormatException ``` ### 解决方案与最佳实践 为了有效预防并处理此类异常,建议采取以下措施: #### 1. 验证输入合法性 在执行任何可能引起异常的操作之前,先验证输入数据的有效性。可以利用正则表达式或其他方式来确认待转换字符串确实代表合法数字[^3]。 ```java public static boolean isValidInt(String str) { try { Integer.parseInt(str); return true; } catch (NumberFormatException e) { return false; } } ``` #### 2. 使用条件判断代替直接转换 通过提前检查字符串的内容结构,可以在不实际调用转换函数的情况下排除明显错误的情况。对于简单的场景来说非常有用[^4]。 ```java if (!str.matches("-?\\d+(\\.\\d+)?")) { System.out.println("Invalid input!"); } else { double num = Double.parseDouble(str); } ``` #### 3. 应用默认值或范围限制 设定合理的默认值作为备用选项;也可以规定允许的最大最小边界,超出这些边界的输入都将被拒绝接受[^5]。 ```java private static final int DEFAULT_VALUE = 0; public static int parseOrDefault(String value, int defaultValue) { try { return Integer.valueOf(value.trim()); } catch (Exception ex) { return defaultValue; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值