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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付江涛 金牌黑马   /  2014-3-22 21:18  /  995 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 付江涛 于 2014-3-24 01:05 编辑
搞不懂调用Exception的getMessage方法,怎么个流程

疑惑+疑惑

希望能帮忙解答一下,最好能说贴一下代码,说一下流程

7 个回复

倒序浏览
自己动手丰衣足食,再论坛查了很多,感觉思路有点清晰了
回复 使用道具 举报
java的异常体系中的基类是Throwable,Exception和Error是它的直接已知子类。Exception类中直接是继承了父类Throwable中的getMessage()方法。
public String getMessage()---------------这个是Throwable中的getMessage()方法,返回一个指定的详细信息;这个信息通过Throwable的构造函数Throwable(String message)获得。
Exception是Throwable的子类,其getMessage()方法也是继承来的;
你自己自定义异常继承Exception类,调用getMessage()方法,也是这么个流程 。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
歌癫 发表于 2014-3-22 23:52
java的异常体系中的基类是Throwable,Exception和Error是它的直接已知子类。Exception类中直接是继承了父类 ...

Throwable(String message) 中的message只是一个参数名,就是自己传入新的异常信息,然后通过getMessage获取。

Exception也有Exception(String message) 构造函数,同时又继承了Throwable中的getMessage方法

  1. class FuShuException extends Exception //成为异常,继承体系,具备异常特性
  2. {

  3.         FuShuException(String msg)
  4.         {
  5.                 super(msg); // 等于将msg的值出入Exception(String message) ,
  6.         }
  7.        
  8. }
  9. class Demo
  10. {
  11.         int div(int a,int b)throws FuShuException
  12.         {
  13.                 if (b<0)
  14.                 {
  15.                         throw new FuShuException("出现了除数是负数的情况 / by fushu"); // 抛出异常
  16.                 }
  17.                 return a/b;       
  18.         }
  19. }

  20. class ExceptionDemo3
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 Demo d=new Demo();
  25.                 try
  26.                 {
  27.                         int x=d.div(4,-1);
  28.                         System.out.println("x="+x);
  29.                 }
  30.                 catch (FuShuException e)  // FuShuException e = new FuShuException
  31.                 {
  32.                         System.out.println("toString:"+e.toString()); //调用的toString方法是 Exception继承Throwable的
  33.                         System.out.println("除数出现负数了");
  34.                         System.out.println("getMessage:"+e.getMessage()); //调用父类Exception的getMessage方法,Exception的方法也是继承Throwable的
  35.                 }
  36.                

  37.                 System.out.println("over");
  38.         }
  39. }
复制代码
对不对?


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
楼主好,异常类中有一个保存异常信息的String变量,当我们通过throw 抛出异常时,异常类构造函数中的String参数就保存在这个变量中,getmessage()函数就是返回这个变量中的数据,
回复 使用道具 举报
yanzhendong 发表于 2014-3-23 15:40
楼主好,异常类中有一个保存异常信息的String变量,当我们通过throw 抛出异常时,异常类构造函数中的String ...

嗯  我上面分析的对了吧
回复 使用道具 举报
歌癫 中级黑马 2014-3-23 20:25:36
7#
付江涛 发表于 2014-3-23 09:22
Throwable(String message) 中的message只是一个参数名,就是自己传入新的异常信息,然后通过getMessage ...

很好,看来你已经理解这个问题了。祝贺你!:)
回复 使用道具 举报
付江涛 来自手机 金牌黑马 2014-3-24 00:56:15
8#
本帖最后由 付江涛 于 2014-3-24 01:06 编辑
歌癫 发表于 2014-3-23 20:25
很好,看来你已经理解这个问题了。祝贺你!


嗯嗯   你写的很好理解   多谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马