java异常处理方式及自定义异常(学习,面试)2.0版本

1.0版本异常体系,什么是异常

异常1.0版本

异常处理方式

1.throw 手动抛出一个异常,这个异常对象需要我们手动创建
格式: throw new 异常类名(参数);
例如

throw new NullPointerException("要访问的arr数组不存在");
throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在,已超出范围");
注意:运行时期异常java虚拟机会帮我们处理

案例

public class test03 {
   public static void main(String[] args) {
	
	   int [] a= {1,2,3};
	   int index=4;
	   getArr(a,index);
}
   public static void getArr(int[] a,int index) {
	   
	   if (index>=0 && index <= a.length -1) {
		System.out.println(a[index]);
	}else {
		/*
		 *  没有加throw的时候是 ArrayIndexOutOfBoundsException()(下表索引越界异常)
		 * 加throw后 被我设置成了控制针异常
		 */
	throw new NullPointerException("需要访问的数组不存在");
	}
	   
   }
}

运行结果
在这里插入图片描述
重要如果产生了问题,我们就会throw将问题描述类即异常进行抛出,也就是将问题返回给该方法的调用者。那么对于调用者来说,该怎么处理呢?一种是进行捕获处理,另一种就是声明出去,使用throws声明处理。
2.throws 声明异常
声明异常格式:
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ }
代码展示
没抛之前
在这里插入图片描述
抛出后
在这里插入图片描述
3.try/catch
捕获异常 Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。
格式
try{
捕获信息(可能会出现错误代码)
}catch(异常信息){
处理方式
}finally{
不管程序怎样,这里都将会被执行
}

try: 放可能出现异常的代码。
catch: 用来对某些异常进行捕获,对捕获的异常进行处理。
注意 try和catch都不能单独使用,必须连用。finally不能单独使用。

public class test8 {
    public static void main(String[] args) {

        //try捕获
        //捕获的FileNotFoundException异常
        try {
       //可能出现异常的代码,没有异常则不执行catch模块,但finally无论怎么都会执行
            read("a.txt");
       //try捕获什么异常,里面就放什么异常也可以放比他大的如(Exception)
        } catch (FileNotFoundException e) {
            System.out.println(e);

        }finally {
            System.out.println("aaasaa");
        }
    }                                          //2.抛给调用者
    public static void read(String path) throws FileNotFoundException {
        //如果不是这个a.txt文件
        if (!path.equals("a.txt")){
            //如果不是这个a.txt,则该文件不存在,是个异常 throw手动抛出一个异常
            //1.这个a.txt文件不存在抛出个异常
          throw new FileNotFoundException("文件找不到");
        }
    }
}

当只有在try或者catch中调用退出JVM的相关方法,此时finally才不会执行,否则finally永远会执行。

  try {
            read("a.txt");
            return;//直接返回,finally里就不会执行
        } catch (FileNotFoundException e) {
            System.out.println(e);
        }finally {
            System.out.println("aaasaa");
        }

多个异常使用捕获又该如何处理呢?
1.多个异常一次捕获,多次处理。(推荐)

try{

}catch(异常类型 A){

}catch(异常类型 B){

}
注意: 这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值