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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙新强 中级黑马   /  2012-6-21 17:20  /  2051 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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()是个什么样的方法??  麻烦大家解决一下 谢谢了

4 个回复

倒序浏览
    e是异常对象,你在System.out.println("捕捉异常"+e)是就是把异常对象的结果输出来了,也就是说你等于把异常信息输出,而后面的句子System.out.println("捕捉异常"+e.Message()),还是输出异常信息,这当然没什么影响,不过一般情况下不会像上面那样用的,都是e.printStackTrace()打印异常信息
    e.printStackTrace()是打印异常堆栈信息,能够完整的输出各种异常,是程序员规范的代码写作形式,除非你要在catch块中做其他操作,否则一般都是写e.printStackTrace()
回复 使用道具 举报
当处理异常采用throw的方式时,通过调用异常的getMessage()方法,可以获取执行程序所抛出异常的详细信息。
回复 使用道具 举报
我刚试了下你的代码,System.out.println("捕捉异常:"+e);输出的是异常类型和异常实例的详细消息字符串
System.out.println("捕捉异常"+e.Message());是错误的
应该是System.out.println("捕捉异常:"+e.getMessage());这个是输出异常实例的详细消息字符串
回复 使用道具 举报
本帖最后由 oracleserver 于 2012-6-22 15:33 编辑

e.getMessage(); 只会获得具体的异常名称. 比如说NullPoint 空指针,就告诉你说是空指针...
e.printStackTrace();会打出详细异常,异常名称,出错位置,便于调试用..
一般一个异常至少几十行,呵呵.....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马