加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么这个NumberFormatException?

发布时间:2020-12-14 05:31:38 所属栏目:Java 来源:网络整理
导读:我有这个堆栈跟踪(部分) Servlet.service() for servlet action threw exceptionjava.lang.NumberFormatException: For input string: "37648" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Long.parseL
我有这个堆栈跟踪(部分)
Servlet.service() for servlet action threw exception
java.lang.NumberFormatException: For input string: "37648"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
 at java.lang.Long.parseLong(Long.java:403)
 at java.lang.Long.valueOf(Long.java:482)
 at java.lang.Long.decode(Long.java:593)

在我的一个日志文件中
我不知道是什么是真正的输入字符串.
但是用户发生了同样的堆栈跟踪.

这样的堆栈跟踪如何发生?

解决方法

可能是因为他们的投入领先于零.

这运行正常:

public class DecodeLong
{
    public static final void main(String[] params)
    {
        long    l;

        l = Long.decode("37648");
        System.out.println("l = " + l);
    }
}

但是如果你改变这个:

l = Long.decode("37648");

到这个:

l = Long.decode("037648");

…它变为无效的八进制,并且Long.parseLong的异常不包括前导零:

Exception in thread "main" java.lang.NumberFormatException: For input string: "37648"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Long.parseLong(Unknown Source)
        at java.lang.Long.valueOf(Unknown Source)
        at java.lang.Long.decode(Unknown Source)
        at DecodeLong.main(DecodeLong.java:24)

它不包括它,因为解码调用parseLong没有零,但是基数设置为8.

谈论模糊:-)所以如果你通过显示实际的输入来更新你的程序来处理异常,你可能会发现它是沿着这些方向的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读