A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 史龙贤 黑马帝   /  2012-9-7 01:17  /  1490 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class HelloClass {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
    // Long l = null;
                String str="32145679a";
        try {
               
            Long l = Long.parseLong(str);
            System.out.println(l);
                 
        } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("出现非法字符.......");
        }finally{
                System.out.println("出现非法字符...悲剧了...");
        }
       
     
        }

}
最后输出:java.lang.NumberFormatException: For input string: "32145679a"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Long.parseLong(Long.java:412)
        at java.lang.Long.parseLong(Long.java:461)
        at HelloClass.main(HelloClass.java:13)
出现非法字符.......
出现非法字符...悲剧了...
都已经捕获了怎么还会出现错误呢???

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 细节问题要注意,注意你前面还有printStack.

查看全部评分

5 个回复

倒序浏览


楼主String格式不对,Long类中的parseLong(String s)中的字符串中的字符必须都是十进制数字,除非第一个字符是减号 “-” ,它表示一个负值。
回复 使用道具 举报
杨卓儒 来自手机 黑马帝 2012-9-7 02:00:47
藤椅
若想要转换字符串,那么必须指定基数,用parseLong(String s,redix d) 去查查API
回复 使用道具 举报
没有错误啊,e.printStackTrace(),打印堆栈的异常信息,注释掉,结果就是:
出现非法字符.......
出现非法字符...悲剧了...
回复 使用道具 举报
e.printStackTrace()  这句话是打印出堆栈的错误信息,若不想提示去掉这句
回复 使用道具 举报
是因为出现错误才被捕获的。不是说捕获了就不再出现错误。楼主是不是理解错了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马