目录
3.1:运行时异常(空指针,数组标越界等等常见异常或者自定义异常)
1:什么是Java异常
Java程序在运行的过程中,发生了期望值外结果,阻止程序按照我们预设的逻辑正常执行,这就是异常。Java提供丰富完善的异常处理机制。因为这种机制大大降低了编写和维护可靠程序的门槛。如今,异常处理机制已经成为现代编程语言的标配。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。
2:Java异常机制详解
Java异常机制的顶层父类是Throwable,在Throwable父类下边有两个子类,分别是Error和Exception。
Throwable(异常顶层父类):异常顶层父类
Error(错误):错误不是异常,错误脱离的程序员控制。错误在代码中通常被忽略,比如堆栈错误和JVM内存溢出,程序出现错误的时候无法继续执行。主要用来指示运行时环境发生的错误
Exception(异常):Exception及其子类代表了程序运行过程中的各种异常情况,可以被Java处理,是一场处理的核心
详细结构如图所示:
通过上图,我们可以看到整个Java异常架构
3:异常处理
针对这些各种各样的异常,我们有两种处理方式try catch捕获或者throws抛出
捕获:try catch处理异常
抛出:将异常抛出给调用方法
3.1:运行时异常(空指针,数组标越界等等常见异常或者自定义异常)
特点:不会强制检查,我们可以强制try catch或者也可以throw自定义处理
这里的try catch不重复说了,throw和throws的区别:
throws:是声明,标识方法存在异常,调用方法要处理,处在方法上
throw:更像动词,是个自定义抛出异常动作,强调自定义,处在方法里
例如案例,模拟银行取钱的时候当账户金额小于要取出的钱时,报出指定的异常
1:自定义异常
2:自定义银行账户方法
3:测试方法
4: 输出结果
3.2:检查时异常(IO异常,SQL异常)
特点:必须try catch或者throws抛出异常,给调用的方法
在IO异常和sql异常中,我们一般都要捕获,并且在finally中关闭流或者连接