一、异常概念
异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致 JVM 的非正常停止。
在 Java 等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出了一个异常对象。
Java 处理异常的方式是中断处理。
异常指的并不是语法错误,语法错误,编译不通过,不会产生字节码文件,根本不能运行。
二、异常体系
异常机制 其实是帮助我们找到程序中的问题。
java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。其下有两个子类:
Exception:异常,进行编译(写代码) java 程序出现的问题,程序员可以通过代码的方式纠正,使程序继续运行。
Error:严重错误,无法通过处理的错误,只能事先避免,必须通过修改源代码,程序才能继续执行。经典代表:VirtualMachineError(堆内存溢出OutOfMemoryError,栈内存溢出StackOverflowError)
三、异常分类
异常(Exception)的分类:根据编译时期还是运行时期来分类
运行时期异常:RuntimeException 运行时期异常(或它的子类)。又称非受检异常,即在运行时期,检查异常,在编译时期,运行异常不会编译器检测(不报错)。(如:空指针异常、数组下标越界、类型转换异常、数字格式异常)这些异常可以完全避免掉。
编译时期异常:Exception 异常。除了RuntimeException系列以外的,都是编译时异常,又称为受检异常。在编译时期就会检查,如果没有处理异常,则编译失败。(如:IOException、日期格式化异常)
四、异常的产生过程解析
异常的产生过程分析(分析异常的怎么产生的,如何处理异常)
五、Java 如何处理异常(处理异常的过程)?
(1)当程序运行到某一句时,发生了异常,那么程序会先停下来
(2)程序会在这句代码处,查看原因,生成一个合理“异常对象”,然后“抛”出
(3)JVM会检测在这句代码的外围,是否有try..catch结构,可以“捕获”它,
如果可以捕获,那么程序再处理完异常后,继续下面的运行,不会崩溃;
如果不能捕获,那么会把这个异常继续抛给“上级”,如果“上级”能处理,那么程序从“上级"处理完的代码后面继续运行;
如果上级也不能处理,那么继续往上抛,一直到达JVM,那么就“崩溃”