开发者社区> 问答> 正文

java中的getMessage()和toString()有什么区别?

lass ZiDingYiChang 
    {
        public static void main(String[] args) 
        {
                  Demo a =  new Demo();
                 try
                 {
                            int b=a.div(4,-2);
                         System.out.println(b);
                       }
                    catch (FuShuException e)
                 {
                            System.out.println(e.toString());//为什么说这里的toString()方法自动调用下面的getMessage()方法?
                   }
                 System.out.println("Hello World!");
              }
}
class FuShuException extends Exception
  {
      private String str;
      FuShuException(String str)
         {
         this.str=str;
        }

         public String getMessage()
               {
              return str;
               }
    }
 class Demo
  {
        int div(int x,int y) throws FuShuException
          {
          if (y<0)
            {
                 throw new FuShuException("除数为负数,运算失败"); 
             }
      return x/y;
   }
}

展开
收起
蛮大人123 2016-06-13 14:45:52 3469 0
2 条回答
写回答
取消 提交回答
  • e.toString(): 获得异常种类和错误信息 e.getMessage():获得错误信息
    2019-07-17 19:36:00
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    你没有重写toString方法,因此这里调用的toString方法是父类的方法,即Throwable类的方法,查看api文档可知, ThrowabletoString方法调用了当前对象的 getLocalizedMessage方法,这个方法也是 Throwable类的方法, 对于不重写此方法的子类,默认实现返回与 getMessage() 相同的结果。总之,toString方法调用了 getMessage方法,因此返回与 getMessage方法一样的内容。

    2019-07-17 19:36:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载