Java|异常 Exception 和 Error 区别
异常 Exception 和 Error 区别。
一、基础概念
程序中的错误:编译错误、运行时错误、逻辑错误。
编译错误和运行时错误相对于逻辑错误好处理一些。
Java 中异常分为两类 Exception 和 Error,这两个类都继承自 Throwable 类。
Error(错误)表示程序自身无法处理的错误,表示程序存在较大问题。多数错误与编程人员操作无关,多表示 JVM 执行过程中的错误,当这类错误发生时虚拟机通常选择终止。这类错误有 StackOverFlowError、OutOfMemoryError
Exception(异常)表示可以程序自身可以处理的错误。Exception 类有个重要的类 RuntimeException, RuntimeExctption 类及其子类表示 JVM 常用操作引起的错误,例如空值引用,除数为 0,下标越界。
二、异常分类
分类 1
1、非运行时异常,也称编译异常,这种异常在编译器进行检查,不进行处理无法通过编译器。这些异常是非 RuntimeException 及其子类异常,例如 IOException、SQLException。
2、运行时异常(RuntimeException 及其子类),编译器不进行检查,方法抛出这种异常也无须可以处理。常见的运行时异常有下标越界、除数为 0、空指针、类找不到等
分类 2
1、受检查异常(编译器要求必须处理的异常),这类问题再程序开发过程中是常见的问题,Exception 中非 RuntimeException 及其子类的异常都是受检查异常。
2、不受检查异常(编译器不强制处理),RuntimeException 和 Error 都是不受检查异常,即使方法抛出了这些异常也不要求必须捕获和抛出。
三、常见异常
1、RuntimeException
- ArrayIndexOutOfBoundsException 数组下标越界
- ArthmeticException 算数条件异常,如,除数为 0
- SecurityException 安全异常
- IllegalArgumentException 非法参数异常
- NegativeArraySizeException 数组下标为负数异常
- ClassNotFoundException 找不到类异常
- NullPointerException 空指针异常
- ClassCastException
2、非 RuntimeException
- IOException 输出输出异常
- SQLException SQL 异常
3、Error
- OutOfMemoryError 内存不足异常
- StackOverflowError 栈溢越界异常
https://www.cnblogs.com/heqiyoujing/p/11297603.html https://blog.csdn.net/iblade/article/details/78196016