黑马程序员技术交流社区

标题: 自定义异常问题 [打印本页]

作者: Up↑Lee↗    时间: 2014-3-23 20:38
标题: 自定义异常问题
本帖最后由 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. */
复制代码
问题在注释中

作者: yanzhendong    时间: 2014-3-23 21:01
楼主你好,你自定义的类在继承exception类的同时已经继承了他的父类,凡是exception对他的父类能有的操作你自定义的类也能操作
作者: my_android_drea    时间: 2014-3-23 21:02
本帖最后由 my_android_drea 于 2014-3-23 21:59 编辑

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

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


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




作者: yanzhendong    时间: 2014-3-23 21:06
类的继承机制:

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

无标题.png

作者: Up↑Lee↗    时间: 2014-3-24 15:23
yanzhendong 发表于 2014-3-23 21:01
楼主你好,你自定义的类在继承exception类的同时已经继承了他的父类,凡是exception对他的父类能有的操作你 ...

恩恩  谢谢
作者: Up↑Lee↗    时间: 2014-3-24 15:46
my_android_drea 发表于 2014-3-23 21:02
异常的体系:
Throwable:    1. Error  通常出现重大问题,系统不编写针对代码对其处理;
                  ...

谢谢您的详细解答




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