java——异常

前言

在 Java 编程中,异常处理是非常重要的一环,它不仅能够保护程序运行的稳定性,还能够提高代码的可读性和易维护性。Java 中抛出异常的语句有两种,分别是 throw 和 throws,本文将详细介绍这两个关键字的使用方法及其区别。

一、索引越界的情况

int []arr={1,2,3,4,5};
try{
     System.out.println(arr[10]);

}catch(ArrayIndexOutOfBoundsException e){

详细细节:在try的sout(arr[10])的地方出现了索引越界的异常,然后系统就生成了一个
ArrayIndexOutOfBoundsException的错误,然后拿过来和catch()里面进行比较
发现有这个异常,就把"索引越界了打印出来"

    System.out.println("索引越界了");
}

//好处:会跳过错误,然后继续执行下面的代码
System.out.println("看看我执行了吗");

二、三个问题:

:如果try中没有遇到问题代码该如何运行?
:它会把try中所有的代码进行运行

:如果try中可能遇到多个问题,怎么执行?
:要写多个catch去反映问题

 int []arr1={1,2,3,4,5};
try {
    System.out.println(arr[10]);
    System.out.println(2/0);
}catch(ArrayIndexOutOfBoundsException e){
    System.out.println("索引越界");
}catch (ArithmeticException e) {
    System.out.println("除数不能为0");
}catch (Exception e) {//这个是错误类型的父类,
应写在最下面,写在最前面那他就会把所有的错误dou承包了
    System.out.println("报错");
}

了解:如果两种或多种错误用一个解决方案
那可以写成catch(ArrayIndexOutOfBoundsException | ArithmeticException e)
注意只有一条|,表示或者

:如果try中的错误没有被捕获,那代码怎么运行?
:也就是说catch中没有解决这个错误的方案
       此时就交给虚拟机处理

三、❓面试题:Java中throw和throws的区别

3.1:解释:

throw和throws作为Java中两种异常抛出关键字,虽然两个长得很像,但是却有着很大的区别

throws:跟在方法声明后面,声明可能要抛出的各种异常类. 属于异常处理的一种方式

throw: 用在方法内部,表示手动的抛出一个指定类对象。属于异常的一种生成方式。

3.2:throw 与 .throws 的核心区别
3.2.1:目的不同:

throw 是用来主动抛出异常的,是一个动作。
throws 是用来声明方法可能抛出哪些异常,是一种方法声明。

3.2.2:位置不同:

throw 通常出现在方法体内部,用于在代码执行的过程中主动抛出异常。
throws 出现在方法签名中,用于告诉调用者这个方法可能抛出哪些类型的异常。

3.2.3:使用时机不同:

throw 通常用于在代码逻辑中检测到错误条件后立即抛出异常。
throws 用于那些方法内部可能会抛出但不处理的异常,尤其是受检查异常。

3.2.4:异常类型的处理:

使用 throw 时,抛出的异常可以是受检查异常,也可以是非受检查异常(unchecked exception)。非受检查异常通常不需要在方法签名中声明。
使用 throws 时,必须声明所有可能抛出的受检查异常。非受检查异常虽然也可以声明,但这不是强制性的。

3.2.5:受检查异常与非受检查异常

Java 中的异常可以分为两大类:受检查异常(Checked Exceptions)和非受检查异常(Unchecked Exceptions)。

受检查异常(Checked Exceptions): 这些异常必须要么在方法签名中声明(使用 throws),要么在方法内部进行处理(使用 try-catch 块)。如 IOException,SQLException 等。这些异常通常与外部资源的交互有关,如文件操作、数据库访问等。

非受检查异常(Unchecked Exceptions): 这些异常不强制要求声明或处理,主要包括 RuntimeException 及其子类,如 NullPointerException,IllegalArgumentException 等。这些异常通常表示编程错误,如访问空指针、非法参数等。

最后:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值