异常
开发中: 执行程序发生了错误的信息或者是不正常的情况
错误:控制台直接报错 打印了堆栈信息
执行的代码 没有按照的正常的流程进行执行
ThrowAble 是所以异常类的顶级父类 这个类中封装了所以的异常信息
异常信息:
-
代码错误的具体的行数
-
具体的报错的异常的类型
-
ThrowAble Error ==>这种异常是非常严重的异常 这种异常是jvm虚拟机给抛出(底层的一些异常 不需要解决 解决不了)
Execption 这个异常不是特别严重的异常 这种异常是必须要解决 ArithmeticException 算术异常 NullPointerException 空指针异常
5异常的体系结构
ThrowAble
Error
Execption
RunTimeExecption 运行时异常
ArithmeticException NullPointerException 都属性运行时异常 必须解决
jvm解决异常
jvm解决异常的方式就是 报错 停止jvm 代码终止运行
当调用者都不解决这个异常 ==> 一直往上抛出异常 ==>抛main的时候 ==>jvm 就报错
说明:
定义的方法产生异常时候
这个异常会返回给调用者
如果不解决这个异常 就会继续往上抛 ==> 一直抛到jvm
jvm ==> 报错 打印堆栈信息
== > 停止程序运行 异常后面的代码是不会执行
总结:在开发中所以的异常 都不要给jvm来处理
给jvm处理只有一种结果就是项目崩溃
解决异常
解决异常两种方式 :
- 第一个声明异常
- 第二种捕获异常
声明异常:
也就是告诉调用者 这段代码可能产生异常 需要调用进行处理
而方法的定义只是声明了,没有处理
捕获异常 --> 自定对异常进行处理 自己来解决这个异常==>捕获异常
捕获异常有三种写法
第一种 try catch
第二种 try catch finally
第三种 try finally
throw和throws
throw说明:
- 如果是运行时候异常 或者是其子类 都可以不用处理
- 如果不是运行时异常 就必须捕获或者是抛出异常
- 在方法中只能声明一个异常
throws说明:
-
可以抛出多个异常 但是不能抛出 Execption异常 但是只抛出一个异常是可以抛出 Execption
-
抛出的异常范围是越小越好, 范围小 调用者处理比较方便
throw 与throws区别:
- throw 声明异常 throws 抛出异常
- throw 定义在 在方法中 throws是定义再方法的参数的后面
- throw 在方法中只能声明一个异常 throws 可以抛出多个异常
- throw 声明的异常是实实在在存在 throws 不一定会发生 不一定存在