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. 谈论模糊:-)所以如果你通过显示实际的输入来更新你的程序来处理异常,你可能会发现它是沿着这些方向的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |