第9天:自定义异常

来源:互联网 发布:淘宝上卖的茶杯犬真吗 编辑:程序博客网 时间:2024/06/07 18:09

1.自定义异常的意义:

尽管java虚拟机提供了各种的异常种类,但是面对多样的业务需求时我们自定义一些规则(例如年龄不能为负数),这时我们就需要来自定义一些异常。

自定义异常内容主要包括
1,自定义异常申明(必须继承系统原有的异常类,)

class FuShuException  extends Exception  //申明一个自定义异常{   FuShuException(String  msg){        super(msg);    }}

2, 自定义异常信息的包装;(异常信息:分母不能为负)

if( b<0)        throw new FuShuException("异常信息:分母不能为负"

在产生异常时只有两种处理方法;
1. 使用try{ }catch{ }finlly{ }直接处理,
2. 使用throws throws 抛出,让上一级处理,

需要注意的是;
在某些情况时对抛出有限制;
比如在由继承关系时,子类只能抛出父类继承的异常,或者异常的子异常,
如果父类继承多个异常,那么子类只能抛出父类异常的子集。

如果父类没有抛出异常,那么子类也不能抛出异常,只能使用try{ }catch{ }在方法内直接处理。

finally{};
try{ }catch{ }finlly{ }中的finally{}中的程序是无论程序是否异常都会执行的语句,其作用为断开数据库等操作从而来释放资源,

在开发过程中因为要考虑程序的健壮性所以在catch完所有可能的异常后通常会加一个catch(Exception e)用于接受可能遗漏的异常。

下面是根据学习教程写的一个自定义异常练习。
//需求 分数中除了系统默认的分母不能为零外 再自定义一个分母不能为负的异常 FuShuException

public class ExceptionDemo {    public static void main(String[] args) {        Demo2 ex=new Demo2();        try{            int c= ex.div(4, -1);        System.out.println("c="+c);        }catch(FuShuException e)          {            System.out.println(e.toString());            System.out.println("除数出现负数啦~~");          }        System.out.println("程序结束");        }    }class Demo2{    int div(int a,int b) throws FuShuException{   /*thorws 用来接收throw抛出的异常*/    if( b<0)    throw new FuShuException("异常信息:分母不能为负")//新建一个自定义异常类并且赋予异常信息。        return a/b;    }}class FuShuException  extends Exception  //申明一个自定义异常{   FuShuException(String  msg){        super(msg);    }}
0 0