黑马程序员技术交流社区

标题: 关于异常类的小问题 [打印本页]

作者: 孙新强    时间: 2012-6-21 17:20
标题: 关于异常类的小问题
public class ti2 {

       
        public static void main(String[] args) {
                                fun(0);
                                fun(1);
                                fun(2);
                                fun(3);
        }
static        void fun(int i)
                        {
                System.out.println("调用方法fun("+i+")");
                  try
                    {if( i==0)
                            {System.out.println("没有异常");}
                    else if(i==1)
                                {int a=0;int b=10;b/=a;}
                    else if(i==2)
                                {int m[]=new int[5];
                                m[6]=100;
                                }
                    else if(i==3)
                                {String str="56k9";
                                int n=Integer.parseInt(str);}
                       
                     }
                  catch (Exception e)
                                  {System.out.println("捕捉异常:"+e);
                          
                                  }
                  finally
                          {System.out.println("处理完毕!");}
        }

}
问题  catch语句 为什么把System.out.println("捕捉异常"+e);改为:System.out.println("捕捉异常"+e.Message());    为什么没影响  那么,Message()是个什么样的方法??  麻烦大家解决一下 谢谢了

作者: sbeeqnui1987    时间: 2012-6-21 18:35
    e是异常对象,你在System.out.println("捕捉异常"+e)是就是把异常对象的结果输出来了,也就是说你等于把异常信息输出,而后面的句子System.out.println("捕捉异常"+e.Message()),还是输出异常信息,这当然没什么影响,不过一般情况下不会像上面那样用的,都是e.printStackTrace()打印异常信息
    e.printStackTrace()是打印异常堆栈信息,能够完整的输出各种异常,是程序员规范的代码写作形式,除非你要在catch块中做其他操作,否则一般都是写e.printStackTrace()
作者: 王涛    时间: 2012-6-21 21:46
我刚试了下你的代码,System.out.println("捕捉异常:"+e);输出的是异常类型和异常实例的详细消息字符串
System.out.println("捕捉异常"+e.Message());是错误的
应该是System.out.println("捕捉异常:"+e.getMessage());这个是输出异常实例的详细消息字符串
作者: oracleserver    时间: 2012-6-22 15:32
本帖最后由 oracleserver 于 2012-6-22 15:33 编辑

e.getMessage(); 只会获得具体的异常名称. 比如说NullPoint 空指针,就告诉你说是空指针...
e.printStackTrace();会打出详细异常,异常名称,出错位置,便于调试用..
一般一个异常至少几十行,呵呵.....




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