异常概述
什么是异常
Java 在运行过程当中出现的错误
异常继承体系
Throwable
Throwable继承体系
异常处理方式
- 自己处理,然后继续运行
- 自己没有办法处理,交给 Jvm 来处理
JVM 有一个默认的异常处理机制将异常处理,并将该异常的名称,异常信息,异常出现的位置给打印在控制台上,同时停止运行
10/0;
违背了算法运算法则,抛出异常
抛出的异常是一个对象
New ArithmeticException(“/by zero”) 把这个异常对象返回
此时想把异常对象赋值给a
a是一个int类型不能接收,main方法解决不了
交给jvm来处理,jvm就将该异常在控制台打印程序终止。
自己处理异常
try…catch…finally
基本格式
try{ 可能出现理异常的代码 }catch(异常类型){ }finally{ 处理完异常最后做的处理 } Try:用来检测异常 Catch:用来捕获异常 Finally:释放资源
10/0;会创建一个异常对象
New ArithmeticException(“/by zero”)
赋值给a,接收不了,此时就把异常对象传给catch当中的参数a
能够接收,就会执行catch当中的内容,程序也没有终止
只有在try出问题的时候才会执行catch当中的内容,出问题时 catch 处理完毕之后,后续的代码继续执行
try…catch处理多个异常
在try当中可能会出现不同的异常类型,此时可以使用多个catch来进行处理
Exception e 不能写在最上面,写在上面会报错,因为下面的永远不会执行到
JDK7处理多个异常
常用方法
获取异常信息
获取异常类名和异常信息
获取异常类名和异常信息,及异常出现的位置
throws方式处理异常
抛出运行时异常
抛出运行时异常,不需要处理
抛出编译时异常
抛出了一个编译时异常,必须得要有人处理
如果不处理,必须继续往上抛,抛给方法调用者
此时由于 setAge 内部抛出了一个异常,在调用该方法时必须得要处理
- 必须处理异常
- 继续往上抛出
throw与throws区别
throw
用在方法体内,跟的是异常对象名称,只能抛出一个异常对象,表示抛出异常
throws
用在方法声明后面,跟的是异常类名,可以跟多个异常类名,中间使用逗号隔开,表示抛出异常,由方法调用者来处理
编译时异常与运行时异常
什么是运行时异常
所有的 RuntimeException 类及其子类称为运行时异常,在编译时不会报错,在运行过程程序终止运行
什么是编译时异常
程序员必须显示处理,否则程序就会发生错误无法通过编译
编译时异常发生的情况
在编译时就必须处理这个异常
这个代码是读取一个文件,在读取时,它也不确定你这个文件是否存在
如果不存在,你要怎么处理,所以在编译时就要确定好
如果文件不存储该怎么样处理
运行时异常与编译时异常的区别
运行时异常,程序员犯的错误,需要回来修改代码
编译时异常在编译某个程序的时候,有可能会有这样那样的错误,
比如文件找不到,这样的异常就必须在编译时处理
如果不处理就编译不通过