异常在java中以类的形式存在,每一个异常类都可以创建异常对象
- 异常的继承结构:
- Object
- Object下有Throwable(可抛出的)
- Throwable下有连个分支:Error(不可处理,直接退出JVM)和Exception(可处理的)
- Exception下有两个分支:
- Exception的直接子类:编译时异常(要求程序员在编写程序阶段必须预先对这些异常进行处理)
-
类似于外面下雨不打伞出门容易生病
-
编译时异常又被称为受检异常、受控异常(CheckedException)
- RuntimeExceptionn:运行时异常(在编写程序阶段程序员可以预先处理,也可以不管)
-
类似于出门会被陨石命中
-
运行时异常又被称为未受检异常、未受控异常(UnCheckedException)
-
Java语言对异常处理有两种方式:
-
①在方法声明的位置上,使用throws关键字,抛给上一级
-
②使用try..catch语句进行异常的捕捉
第一种方式 通常用于将异常抛给调用者解决,而第二种方式 是异常自己解决
finally语句通常使用在 语句块中完成资源的释放/关闭
- 因为finally中的代码比较有保障,即使try中出现异常,finally中的
- 语句照常执行
- /**
* try和finally可以没有catch
* try不能单独时使用
*try finally可以联合使用
* 以下代码的执行顺序:
* 先执行try…
* 在执行finally…
* 最后执行return
* 推出java虚拟机后,finally语句里的程序不再执行
* System.exit()
*/
Java中自定义异常: - ①:编写一个类继承Exception或者RuntimeException
- ②:提供两个构造方法,一个无参数的,一个带有String参数的