Java学习历程之----异常处理篇(二)

科普知识

前言

     大家在运行代码的过程中是否遇到过Error或Exception呢?这两个异常出现就代表我们的程序出了问题,那他们两者之间又有哪些区别和联系呢?Error(错误)和 Exception(例外)都是 java.lang.Throwable类的子类,在Java代码中只有继承了Throwable类的实例才能被throw或者catch。

一、Error

     Error 错误是任何处理技术都无法恢复的情况,肯定会导致程序非正常终止。并且 Error 错误属于未检查类型,大多数发生在运行时。绝大部分的 Error 都会导致程序处于非正常、不可恢复状态。下面是常见的错误(Error)类型:                                                          

1) NoClassDefFoundError:找不到 class 定义异常

2) StackOverflowError:深递归导致栈被耗尽而抛出的异常

3) OutOfMemoryError:内存溢出异常

二、Exception

      Exception又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源码里必须显示的进行捕获处理,这里是编译期检查的一部分。不检查异常就是所谓的运行时异常,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译器强制要求。             

2.1 运行时异常(RuntimeException):

1)NullPropagation:空指针异常;

2)ClassCastException:类型强制转换异常

3)IllegalArgumentException:传递非法参数异常

4)IndexOutOfBoundsException:下标越界异常

5)NumberFormatException:数字格式异常

2.2 非运行时异常:

1)ClassNotFoundException:找不到指定 class 的异常

2)IOException:IO 操作异常

三、实战

下面我们通过简单的代码来演示Error和 Exception                      

3.1 Error

package code.yichang2;
class StackOverflow {
    public static void test(int i) {
        if (i == 0) {
            return;
        } else {
            //无返回值,将会进入死循环,最终导致堆栈溢出错误
            test(i++);
        }
    }
}
public class Error {
    public static void main(String[] args) {
        // 执行StackOverflow方法
        StackOverflow.test(5);
    }
}

运行结果及截图:

3.2 Exception

package code.yichang2;
public class Exception {
    public static void main(String args[]) {
        int data[] = {1, 2, 3, 45, 6, 78, 9, 10};
        for(int i = 0; i < 10; i++) {
        //若要正确运行只需将for循环里10改为8或者data.length即可
            System.out.println(data[i]);
        }
    }
}

运行结果及截图:

因为数组的长度只有8,在运行程序的时候,检索数组的下标超过8就会抛出IndexOutOfBoundsException。

小编有话说

最近很忙,但总感觉收获甚微,仿佛在原地踏步。放假的回忆仿佛还停留在昨天,看着学校慢慢开始恢复往昔的人气,新学期就要开始了~

编辑:玥怡居士|审核:世外居士

Java学习历程之----异常处理篇(一)

Java学习历程之----提升总结篇(十三)

Java学习历程之----提升篇(十二)

点点点,赞和在看都在这儿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值