10Java异常

Java异常分为两大类,JVM默认处理和手动处理,包括try-catch和throws方式。try-catch用于捕获并处理异常,使程序能继续执行,而throws用于方法签名,表示方法可能会抛出异常。throw关键字用于主动抛出异常。自定义异常类时,需继承Exception或其子类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常分类

异常的体系

异常类

Throwable是所有异常类的超类。下面介绍几种Throwable类中的方法,在我们捕获(catch)异常时可以使用这些方法进行处理。

方法名说明
public String getMessage()返回此 throwable 的详细消息字符串
public String toString()返回此可抛出的简短描述(异常类名+信息)
public void printStackTrace()把异常的错误信息输出在控制台(最全的)

异常的处理

(一)JVM默认处理

1、自动的把异常的名称,错误原因及异常出现的位置等信息输出在了控制台。

2、程序停止执行。

缺点就是程序会在异常处停止执行,我们想让出异常的程序也能一直运行下去。

(二)自己手动处理

手动处理,需要知道将要出现的异常类名

通过查询可以知道该异常类是属于RuntimeException类还是属于非RuntimeException类。

1、try-catch方式

可以使程序继续运行,不会停止执行。

当循环内的代码出现异常,需要结束循环时,将try代码块放在循环外;

当循环内的代码出现异常,需要继续执行循环时,将try代码块放在循环内。

当try代码遇见循环输入时:nextInt方法不会清除缓存流,在catch中使用next或者nextLine一类会清除缓存流的方法就好了。你的Scanner估计就在循环外部new了一次,当然开始循环后就不会有输入的机会了,把Scanner实例话的语句写到try里去就好了。

格式:

try {
	可能出现异常的代码;
} catch(异常类名 变量名) {
	异常的处理代码;
}

示例:

public class ExceptionDemo01 {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }

    public static void method() {
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);
            System.out.println("这里能够访问到吗");
        } catch (ArrayIndexOutOfBoundsException e) {
//            System.out.println("你访问的数组索引不存在,请回去修改为正确的索引");
            e.printStackTrace();
        }
    }
}
2、throws方式

格式

public void 方法名() throws 异常类名{
    出现异常的代码;
}

throws格式是跟在方法的括号后面的

3、编译时异常必须要进行处理,两种处理方案:try…catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理。

4、处理异常最终还是要使用try-catch语句,throws只是把异常从产生异常的方法中抛出,并没有解决异常。

throw

throw用于在方法体内部主动抛出异常对象,该异常对象可以是Java中预定义的异常,也可以是我们自定义的异常。(就是说这个地方本来没有异常,我们用throw关键字给它加个异常)

格式

throw new 异常类名();//在执行到该语句时就会出现以该异常类命名的异常

如果该方法体内部有throw抛出异常,那么有两种处理方法。

方法一:在方法体内部直接使用try-catch语句处理异常。

方法二:在该方法声明后使用throws抛出异常,在调用方法时再使用try-catch语句处理异常。

throws与throw的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XgEOzsUv-1679710883178)(D:\00-Study\Java\Java记录\img\throws与throw.png)]

自定义异常类

当Java中预定义的异常类无法满足我们需要时,我们就可以自定义一个新的异常类使用。

格式

public class 异常类名 extends Exception{
    无参构造方法;
    带参构造方法;
}

由于继承了Exception类,Exception类又继承了Throwable类,因此我们自定义的异常类对象也可以使用Throwable类中的成员方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值