Java之异常处理

一、认识异常

1.异常的概念

Java 中,将程序执行过程中发生的不正常行为称为异常。。比如之前写代码时经常遇到的:
1. 算术异常
System.out.println(10 / 0);
// 执行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
2. 数组越界异常
int[] arr = {1, 2, 3};
System.out.println(arr[100]);
// 执行结果
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
3. 空指针异常
int[] arr = null;
System.out.println(arr.length);
// 执行结果
Exception in thread "main" java.lang.NullPointerException
从上述过程中可以看 到,java中不同类型的异常,都有与其对应的类来进行描述。 

2.异常的体系结构

异常种类繁多,为了对不同异常或者错误进行很好的分类管理,Java内部维护了一个异常的体系结构:

6703cef0fe1b47f180dfdcfc4bcbbebd.png

从上图中可以看到:
1. Throwable 是异常体系的顶层类,其派生出两个重要的子类, Error Exception
2. Error 指的是Java虚拟机无法解决的严重问题,比如: JVM 的内部错误、资源耗尽等,这种错误很少发生,典型代表: StackOverflowError(栈溢出) OutOfMemoryError(内存溢出),一旦发生回力乏术。
3. Exception 异常产生后程序员可以通过代码进行处理,使程序继续执行。我们平时所说的异常就是Exception。

3. 异常的分类

异常可能在编译时发生,也可能在程序运行时发生,根据发生的时机不同,可以将异常分为

1. 编译时异常

在程序编译期间发生的异常,称为编译时异常,也称为受检查异常, 该异常必须要被捕获或者声明,否则无法运行。
class Person implements Cloneable{
    public String name;

    public Person(String name) {
        this.name = name;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
public static void main(String[] args)  {
        Person person1 = new Person("zhangsan");
        Person person2 = (Person)person1.clone();

    }
// 因为main方法没有使用throws CloneNotSupportedException,这个程序将不能运行,在编译时就会报错。后面会讲到throws
//或者下面这样写
class Person implements Cloneable {
    public String name;
    public Person(String name) {
        this.name = name;
    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}public static void main(String[] args) { //这里没有声明,但是捕获了
    Person person1 = new Person("zhangsan");
    try {
        Person person2
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值