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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Up↑Lee↗ 中级黑马   /  2014-3-23 20:38  /  1189 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Up↑Lee↗ 于 2014-3-24 11:31 编辑

  1. class FuShuException extends Throwable //Exception //   Exception的父类是Throwable,为什么FuShuException直接继承Exception就可以呢??
  2. {                                                                                //为什么总觉得应该继承Throwable,又为什么继承两者的结果一样呢?
  3.         private String msg;                                        //下方注释程序不正说明如此么?
  4.         FuShuException(String msg)
  5.         {
  6.                 super(msg);         
  7.                
  8.         }
  9. }



  10. class Demo
  11. {
  12.         int div(int a,int b)throws FuShuException
  13.         {
  14.                 if(b<0)
  15.                         throw new FuShuException("出现了除数是负数的情况------ / by fushu");//手动通过throw关键字抛出一个自定义异常对象。

  16.                 return a/b;
  17.         }
  18. }


  19. class  ExceptionDemo3
  20. {
  21.         public static void main(String[] args)
  22.         {
  23.                 Demo d = new Demo();
  24.                 try
  25.                 {
  26.                         int x = d.div(4,-9);
  27.                         System.out.println("x="+x);               
  28.                 }
  29.                 catch (FuShuException e)
  30.                 {
  31.                         System.out.println(e.toString());
  32.                 }
  33.                
  34.                 System.out.println("over");

  35.         }
  36. }

  37. /*
  38. class Throwable
  39. {
  40.         private String message;
  41.         Throwable(String message)
  42.         {
  43.                 this.message = message;
  44.         }

  45.         public String getMessage()
  46.         {
  47.                 return message;
  48.         }
  49. }

  50. class Exception extends Throwable
  51. {
  52.         Exception(String message)
  53.         {
  54.                 super(message);
  55.         }
  56. }


  57. */
复制代码
问题在注释中

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
楼主你好,你自定义的类在继承exception类的同时已经继承了他的父类,凡是exception对他的父类能有的操作你自定义的类也能操作
回复 使用道具 举报
本帖最后由 my_android_drea 于 2014-3-23 21:59 编辑

异常的体系:
Throwable:    1. Error  通常出现重大问题,系统不编写针对代码对其处理;
                      2. Exception  在运行时出现的一些情况。
因为你定义的是异常,是可处理的,而 Error 不可处理,是重大问题!

继承Exception的原因:
        异常体系有一个特点:因为异常类和对象都被抛出。他们都具有可抛性,这个可抛性
        是Throwable体系中独有的特点
。只有这个体系中的类和对象才可以被throws和throw
        操作。


你程序中就抛了异常啊!根据可抛性,所以你上面的程序自定义异常继承哪个编译运行都没有问题!但是你自定义的异常只能用 Throwable 中有的方法,而Exception中特有的方法不可用,上面的程序简单,所以体现不了继承Throwable和Exception的区别!!



评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
类的继承机制:

无标题.png (20.93 KB, 下载次数: 21)

无标题.png
回复 使用道具 举报
yanzhendong 发表于 2014-3-23 21:01
楼主你好,你自定义的类在继承exception类的同时已经继承了他的父类,凡是exception对他的父类能有的操作你 ...

恩恩  谢谢
回复 使用道具 举报
my_android_drea 发表于 2014-3-23 21:02
异常的体系:
Throwable:    1. Error  通常出现重大问题,系统不编写针对代码对其处理;
                  ...

谢谢您的详细解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马