- 异常:就是程序中出现的不正常的现象(错误与异常)
- 异常的继承体系:
- Throwable: 它是所有错误与异常的超类(祖宗类)
- |- Error 错误,修改java源代码
- |- Exception 编译期异常, javac.exe进行编译的时候报错
- |- RuntimeException 运行期异常, java出现运行过程中出现的问题
- 异常处理的两种方式:
- 1,出现问题,自己解决 try…catch…finally
- try{
- 可能出现异常的代码
- } catch(异常类名 对象名){
- 异常处理代码
- } finally {
- 异常操作中一定要执行的代码
- }
-
- 2,出现问题,别人解决 throws
- 格式:
- 修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2,...{}
- public void method() throws Exception{}
- 异常分类
- 异常的根类是Throwable,其下有两个子类:Error与Exception,平常所说的异常指Exception。
- 严重错误Error,无法通过处理的错误
- 编译时异常Exception,编译时无法编译通过。如日期格式化异常
- 运行时异常RuntimeException,是Exception的子类,运行时可能会报错,可以不处理。如空指针异常
- 异常基本操作
- 创建异常对象
- 抛出异常
- 处理异常:
-
-
- 捕获处理,将异常获取,使用try/catch做分支处理
-
-
- try{
- 需要检测的异常;
- } catch(异常对象) {
- 通常我们只使用一个方法:printStackTrace打印异常信息
- }
-
-
-
- 声明抛出处理,出现异常后不处理,声明抛出给调用者处理。
-
-
- 方法声明上加throws 异常类名
-
- 注意:异常的处理,指处理异常的一种可能性,即有了异常处理的代码,不一定会产生异常。如果没有产生异常,则代码正常执行,如果产生了异常,则中断当前执行代码,执行异常处理代码。
- 异常注意事项
- 多异常处理
- 捕获处理:
- 1多个异常可以分别处理
- 2多个异常一次捕获多次处理
- 3多个异常一次捕获,采用同一种方式处理
- 声明抛出异常:
- 声明上使用,一次声明多个异常
- 运行时异常被抛出可以不处理。即不捕获也不声明抛出
- 如果父类抛出了多个异常,子类覆盖父类方法时,只能抛出相同的异常或者是他的子集
- 父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
- 当多异常处理时,捕获处理,前边的类不能是后边类的父类
- 自定义异常
- 如果Java没有提供你需要的异常,则可以自定义异常类。
- 定义方法:编译时异常继承Exception,运行时异常继承RuntimeException。