/*自定义异常
因为项目中会想出现特有的问题
而这些问题并未被Java所描述并进行封装对象
所以对于这些特有的问题可以按照Java的对问题封装的思想
将特有的问题进行自定义的异常封装。
需求:在本程序中对于除数是负数也视为是错误的是无法进行运算的
那么就需要对这个问题进行自定义扥描述。
当在函数中通过throw抛出异常对象,那么就必须要给相应的处理动作。
要么在内部try catch处理
要么在函数上声明让调用者处理。
一般情况,函数内出现异常,函数上需要声明。
发现打印的结果中只有异常的名称,没有异常的信息
因为自定义异常并未定义信息。
如何定义异常信息哪?
因为父类已经把异常信息的操作都完成了
所以子类只要在构造时,将异常信息传递给父类通过super语句
那么就可以直接通过getMessage方法获取自定义的异常信息了。
自定义异常
必须是自定义类继承Exception。
继承Exception原因
异常体系有一个特点
异常类和异常对象都被抛出
他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点
只有这个体系中的类和对象才可以被throws和throw操作。
*/
class FuShuExpection extends Exception{//getMessage();
// private String msg;//自定义一个信息
private int value;
FuShuExpection(String msg,int value){//初始化的时候把这个信息加进来
// this.msg=msg;
super(msg);
this.value=value;
}
//public String getMessage(){//重写父类中的方法
//return msg;
public int getValue(){
return value;
}
}
}
class Zi{
int div(int a,int b)throws FuShuExpection{
if(b<0)
throw new FuShuExpection("出现了除数是负数的情况----/ by fushu",b);//让程序停掉并跳转,手动通过throw关键字抛出一个自定义异常对象。
return a/b;
}
}
class Demo5{
public static void main(String[] args){
Zi d=new Zi();
try{
int x=d.div(4,-1);
System.out.println("x="+x);
}catch(FuShuExpection e){
System.out.println(e.getMessage());
System.out.println(e.toString());
//System.out.println("除数出现负数了");
System.out.println("错误的负数是:"e.getValue());
}
System.out.println("over");
}
}
/*
出现了除数是负数的情况----/ by fushu
FuShuExpection: 出现了除数是负数的情况----/ by fushu toString()方法自动调用了getMessage()方法。
错误的负数是:-1
over
*/
|
|