/* * 自定义异常: * 因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象。所以对于这些特有的问题可以按照 * java的对问题封装的思想,进行自定义的异常封装 * * 1、自定义一个类让其继承Exception,可以在该类中定义自定义方法 * 2、出现在异常时,手动通过关键字抛出一个自定义异常对象。若该对象在一个方法中时,该方法需要抛出 * 3、在调用该方法时,try catch处理 * * * * 继承Exception的原因: * 异常体系有一个特点:可抛型。而这个特点是Throwable这个体系中独有特点。 * 只有这个体系中的异常类和异常对象可以被throws和throw操作 * */ /* * 需求:在本程序中,对于除数是-1,也视为错误的无法进行运算的 * * * * 当在函数内部出现throw抛出异常对象,那么就必须给出相应的处理 * 要么在内部try catch处理 * 要么在函数上声明让调用者处理 * 一般情况在函数内出现异常,函数上需要声明 throws * * * 发现打印的结果只有异常的名称,却没有异常的信息,因为自定义的异并未定义信息 * * 那么如何定义异常信息? * 因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时,将异常信息通过super传递给父类 * 那么就可以直接使用getMessage()方法获取自定义的异常信息 * */ /* * throw和throws的区别: * 1、throw在函数内,throws使用在函数上 * 2、throws后面跟的是异常类。可以有多个,用逗号隔开。throw后跟的是异常对象。 * */ class FuShuException extends Exception{//生成一个负数异常的类 private int value; FuShuException(String msg,int value){ super(msg);//父类中含有getMessage()方法 this.value=value; } //自定义方法 public int getValue(){ return value; } } class Demo{ int div(int a,int b)throws FuShuException{ if(b<0) throw new FuShuException("出现了除数为负数的异常",b);//手动通过关键字抛出一个自定义异常对象 return a/b; } } public class Exception_2 { public static void main(String [] args){ Demo d1=new Demo(); try{ int x=d1.div(3,-1); System.out.println("x="+x); } catch(FuShuException f){ System.out.println(f.getMessage());//f.getMessage()调用了FuShuException中的getMessage()方法 System.out.println("除数为负数:"+f.getValue()); } } }
10-08
438
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)