自定义异常
/*如果一个类称为异常类,必须继承异常体系,以为只有异常类或异常类的子类才具有可抛性!!!才可以被关键字throw和throws操作
//throws使用在函数上 列如:void aaa()throws 自定义的异常类或者系统自带的异常类 {}
//throw使用在函数中 列如: void aaa(){
// if(true)
// throw new 自定义的异常类或者系统自带的异常类 //需要与上抛出的异常类保持一致!!!!实际上抛出的是一个对象
- }
- try{
-
需要被检查的代码,只是发现了异常 ,然后抛给catch处理 eg:调用了异常方法的代码 aaa();
- }
- catch(异常类 变量)这里的变量实际上是接受了抛出了异常的对象!!!这里的异常类也得与抛出的异常类保持一致!!!!!
- {
-
处理异常的代码 eg:输出发生异常的原因等等!!!
- }
- finally
- {
-
一定会被执行的代码!!!!
- }
*/
class FuShuIndexException extends Exception{// 自定义了一个异常类
public FuShuIndexException(String s){
super(s);//此时写这个是为了调用父类异常中的getMeseage();方法,为了得到输入的 s !!!!!!!!!!
}
}
class DeChao{
public int ermeng(int[] arr,int index)throws FuShuIndexException{
if(index<0)
throw new FuShuIndexException(“输入的角标不能小于零!”);
return arr[index];
}
}
public class ExseptionDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[3];
DeChao d = new DeChao();
try{//因为ermeng方法抛出了异常,而这里调用了ermeng方法,并且赋值给了a,所以输出a的语句也需要被检测!!!然后抛给catch处理
int a= d.ermeng(arr, -20);
System.out.println(a);
}
catch(FuShuIndexException e){
System.out.println(e.getMessage());
//System.exit(0);
return ;
}
finally{//finally:一定一会执行的代码块,除了 关闭了 虚拟机(System。exit(0))!!!!它里面的代码是不会被执行!,哪怕是结束了函数,依然会被执行!!!!
System.out.println("haha");
}
System.out.println("over");
}
}