程序的运行或者编译时,所产生的错误统称异常(也叫Bug),而异常又分为Error、Exception当程序遇到Error这种异常时程序不能处理了因为这种异常是物理设备的异常,例如内存不足之类的;而程序能运行捕获的异常就是编译时异常和运行时异常,这些都能通过修改代码来调整修复回来
JVM的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理
- 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
- 程序停止执行
异常结构图
运行时异常
又称为checked异常
RuntimeException类及其子类都是运行时类。运行时异常是在程序运行时由Java虚拟机自动进行捕获处理的。
ArithmeticExceptio 算数异常
ClassCastException 类型转换异常
IndexOutOfBoundsException角标越界异常
NullPointerException 空指针异常
NumberFormatException 数字格式化异常
编译时异常
又称为unchecked异常
除了RuntimeException类及其子类外,其他子类都是编译时异常
使用方式:
1、 使用try…catch语句对异常进行捕获处理,处理方式可以自行编写
2、使用throws关键字声明抛出异常,让调用者自身对其处理,处理方式不能编写
throws 和throw的区别
throws
- 用在方法声明后面,跟的是异常类名
- 表示抛出异常,由该方法的调用者来处理
- 表示出现异常的一种可能性,并不一定会发生这些异常
thorw
- 用在方法体内,跟的是异常对象名
- 表示抛出异常,由方法体内的语句处理
- 执行throw一定抛出了某种异常