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