异常讲解
*
- 异常的概念:异常是指程序在编译的过程中,所抛出的问题
- 异常的分类:编译时的异常,运行时异常,错误
- 编译时异常:我们再写代码的时候,由编译器检测出来的异常
- 编译时异常,不是说我们的代码就一定会出问题,而是提醒我们,这段代码可能会出什么问题
- 运行时异常:运行期间抛出来的异常,编译时没检测问题,运行时由JVM抛出来的异常。
- 错误:程序员没法解决的问题,如:内存不足。。。
- 处理异常的三种选择:
- 1。捕获异常,不告知下一个方法(该方法不会从调用栈弹出)
- 2.捕获异常,并且告知下一个方法(该方法会从调用栈弹出)
- 3.不补货,直接告诉下一个方法(该方法会从调用栈中弹出)
- 捕获 :抓取 抓捕
- 在JAVA中我们采用try-cartch结构去抓捕异常,try中存放的是可能会出现那异常的代码,cartch()中存放的
- 代码是异常类型,和异常方法。
- cartch中处理的方式:
-
1。打印异常
-
2.将异常写入文件
-
3.或者继续调用新的方法
- 编译时处理异常:
- 1.抓捕异常,并沿这方法调用栈向下抛出。后面的方法继续执行
- 2.抓捕异常并声明异常,并沿这方法调用栈向下抛出。后面的方法不执行
- 3.声明异常,并沿这方法调用栈向下抛出,告知调用者,
- try—catch:
-
从上往下执行,如果有匹配成功,跳出try,执行catch块代码,找与其匹配的异常。然后跳出catch。
- 作用范围:
-
1.try语句里面的变量,try-catch语句外面不可以用,(所以变量的声明一般在try-catch语句的外面)
-
变量的使用放置在try-catch内部。
-
2.finally:表示try-catch语句中无论如何都要执行的代码
-
(关闭流,关闭链接,清理内存。。。)finally执行在return之前。
- 多个catch块在进行编译时:
-
子类异常一定要放在上面编译,父类异常放在下面,
- 否则子类异常永远无法执行(由于多态参数的原因)