黑马程序员技术交流社区

标题: 高手看下 [打印本页]

作者: 史龙贤    时间: 2012-9-7 01:17
标题: 高手看下
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)
出现非法字符.......
出现非法字符...悲剧了...
都已经捕获了怎么还会出现错误呢???
作者: 杨卓儒    时间: 2012-9-7 01:47


楼主String格式不对,Long类中的parseLong(String s)中的字符串中的字符必须都是十进制数字,除非第一个字符是减号 “-” ,它表示一个负值。
作者: 杨卓儒    时间: 2012-9-7 02:00
若想要转换字符串,那么必须指定基数,用parseLong(String s,redix d) 去查查API
作者: 王红潮    时间: 2012-9-7 08:28
没有错误啊,e.printStackTrace(),打印堆栈的异常信息,注释掉,结果就是:
出现非法字符.......
出现非法字符...悲剧了...
作者: 佟亚鹏    时间: 2012-9-7 09:09
e.printStackTrace()  这句话是打印出堆栈的错误信息,若不想提示去掉这句
作者: 舒远    时间: 2012-9-7 09:17
是因为出现错误才被捕获的。不是说捕获了就不再出现错误。楼主是不是理解错了?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2