java为什么会出现这种数字格式异常?
我有这个堆栈跟踪(部分)
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)
在我的一个日志文件中 我不知道什么是真正的输入字符串。 但是用户已经使相同的堆栈跟踪发生
这样的堆栈跟踪是如何发生的
# 1 楼答案
可能是因为他们的输入中有一个前导零
这很好:
但如果你改变这一点:
为此:
。。。它变成无效的八进制,并且
Long.parseLong
的异常不包括前导零:它不包括它,因为
decode
调用parseLong
时不带零,而是将基数设置为8谈论晦涩难懂的事。:-)因此,如果您通过显示实际输入来更新程序以处理异常,您可能会发现它与这些内容类似