异常相关
- 异常体系
- 异常使用
- 一些异常的面试题
- java中的final,finalize,finally关键字的区别
1.异常体系
- error/Exception
-
非运行时异常/运行时异常
java中把异常当对象处理
-
2.异常使用
- 1.运用Java异常处理机制
- 1.try。。catch语句
- 2.finally 语句:任务情况下都必须执行的代码
- 3.throws子句:声明可能会出现的异常,在方法声明处使用
- 4.throw语句:抛出异常
- 2.异常处理的原理
- 1.Java虚拟机用方法调用栈(method invocation stack)来跟踪每个线程中一系列的方法调用过程
- 2.如果在执行方法的过程中抛出异常,则java虚拟机必须找到能捕获该异常的catch代码块
- 3.当Java虚拟机追溯到调用栈的底部方法时,如果仍然没有找到处理该异常的代码块就会打印异常栈,并终止线程
- 3.异常流程的运行过程
- 1.如果在finally之前调用了 System.exit(0)退出虚拟机,则不会finally不会执行
- 2.如果在finally之前调用了return 值; 先执行finally再return
- 3.如果在finally之前调用了return 值,这时限制性finally不能改变返回值,return 语句机制。
- 4.建议不要再finally代码块中使用return 语句,可能导致很多错误,覆盖前面
finally代码块中有return语句,导致catch代码块中的throw没有执行,问题就很严重了
图
图
3.一些异常的面试题
- 1.java中的检查性异常和非检查性异常有什么区别?
- 1.Error属于非检查性异常
- 2.Exception
- 2.throw和throws这两个关键字在java中有什么不同
- 1.throw是在方法体中,抛出一个具体的异常
- 2.throws
- 3.如果执行finally 代码块之前方法 返回了结果,或者JVM退出了,finally块中的代码还会执行吗?
finally代码块中会不执行的3中情况:- 1.在try代码块之外异常或者返回不是异常代码块
- 2.在执行try代码块是退出了JVM java虚拟机
- 3.在执行线程中 突然关闭了线程 也可能不执行代码块
网友评论