零EVA

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

因为项目中会出现特有的问题

而这些问题并未被JAVA所描述并封装对象

所以对于这些特有的问题可以按照JAVA对问题封装的思想

将特有问题,自定义的异常封装

 

自定义异常

需求:在下程序中,对于除数是负数,也视为错误

那么对于这个问题要进行自定义的描述

 

当在函数内部出现throw抛出异常对象,那么就必须给出对应的处理动作

  1 在内部try catch处理

  2 在函数上声明让调用者处理

一般情况下,函数内出现异常,函数上需要声明

发现打印的结果中只有异常名称,没有异常信息

因为自定义的异常并未定义异常信息

 

如何定义异常信息呢?

因为父类已经把异常信息的操作都完成了

所以子类 只要在构造时,将异常信息传递给父类通过super语句

那么就可以直接通过getMessage方法获取自定义的异常信息

 

自定义异常:

必须是自定义类继承Exception

为什么要继承Exception

  异常体系有一个特点:因为异常类和异常对象都需要被抛出

  他们都具备可抛性,这个可抛性是Throwable体系中的独有特点

  只有这个体系中的类和对象才可以被throws和throw操作

 

throws和throw的区别

throws使用在函数上,后面跟的异常类,可以跟多个,用逗号隔开

throw使用在函数内,后面跟的是异常对象

 

 1 class NagativeException extends Exception
 2 {
 3     private int value;
 4     NagativeException()
 5     {
 6         super();
 7     }
 8     NagativeException(String msg)
 9     {
10         super(msg);
11     }
12     NagativeException(String msg,int value)
13     {
14         super(msg);
15         this.value = value;
16     }
17     
18     public int getValue()
19     {
20         return value;
21     }
22 }
23 
24 class Demo
25 {
26     int div(int a,int b)throws NagativeException
27     {
28         if(b < 0)
29             throw new NagativeException("出现除数是负数的情况");//手动通过throw关键字排除一个自定义的异常对象
30         return a/b;
31     }
32 }
33 class ExceptionDemo
34 {
35     public static void main(String[] args)
36     {
37         Demo d = new Demo();
38         try
39         {
40             int x = d.div(4,-1);
41             System.out.println("x="+x);
42         }
43         catch(NagativeException e)
44         {
45             System.out.println(e.toString());
46             System.out.println("除数出现负数");
47         }
48         System.out.println("Over");
49     }
50 }
View Code

 

posted on 2017-06-13 00:01  零EVA  阅读(172)  评论(0)    收藏  举报