异常
- 异常的基本概念
- 异常机制有什么用
- java语言中异常以什么形式存在
- 异常的继承结构
- 编译时异常和运行时异常
- java语言对异常处理的两种方式:
-
- [try catch中的代码执行顺序](#try catch中的代码执行顺序)
异常的基本概念
什么是异常
程序执行中发生的不正常情况就叫异常
例如除以0的计算就是异常
异常机制有什么用
出现异常的时候将不正常反馈打印出来,方便程序员对异常进行修改处理
出现的反馈信息叫异常信息,由jvm打印
java语言中异常以什么形式存在
异常在java中以类的形式存在,每一个异常类都能创建异常对象
异常的继承结构
Object
Object下由Throwable
Throwable下有Error(不可处理直接退出jvm)和Exception(可处理)
Exception下有Exception的直接子类(编译时异常)和RuntimeException(运行时异常)两个分支
编译时异常和运行时异常
编译时异常和运行时异常都在运行阶段发生,编译阶段不会发生异常,因为只有程序运行时才会new对象,异常的发生就是在new异常对象
为什么叫编译时异常?
因为编译时异常必须在编写阶段进行处理,不处理编译器会报错
一般发生的都是编译时异常
处理编译时异常就像是你觉得要下雨带了一把伞,概率高需要被预处理
而运行时异常的处理就像是你在路上可能会被鸟屎砸到带了一把伞,概率低,所以一般没必要进行预处理
java语言对异常处理的两种方式:
1.在方法声明的位置使用throws关键字,抛给上一级,谁调用就抛给谁
2.使用try catch语句进行异常的捕捉
选择上抛时,抛给了调用者,调用者要处理这个异常,调用者同样有两种处理方式
注意:
当异常一直被往上抛时,最后被抛给main方法,最终又被抛给jvm,结果就是程序被终止
throws后可以写多个异常,用逗号隔开,抛出的异常类必须是它本身或者他的父类
一般main方法中的异常就不要继续上抛了,最好用try catch捕捉
try catch语法:
try {
//出现异常的代码块
}
catch(异常类名 变量名){
//捕捉到该分支的异常后对异常的处理
}//catch可以多个,从上到下,从小到大
catch中的类名也是确切的异常类或其父类
try catch中的代码执行顺序
只要异常没被捕捉,采用上抛的方式,此方法的后续代码不执行
try中的某一行出现异常则该行后面的代码不会执行
try catch捕捉后后续代码可以被执行