4、Java中final,finalize,finally关键字的区别?
一、异常体系
======
error/Exception
error:是指程序无法处理的错误,例如oom
Exception:程序可以处理的,分为运行时异常(RuntimeException)和非运行时异常
二、异常使用
======
1、运用Java异常处理机制
- a、tyr…catch语句
- b、finally语句:任何情况下都必须执行的代码
- c、throws子句:声明可能会出现的异常
- d、throws语句:抛出异常
2、异常处理的原理
- a、Java虚拟机用方法调用栈(method invocation stack)来跟踪每个线程中一系列的方法调用过程
- b、如果在执行方法的过程中抛出异常,则Java虚拟机必须找到能捕获该异常的catch代码块
- c、当Java虚拟机追溯到调用栈的底部的方法时,如果仍然没有找到处理该异常的代码块,此时按照两个步骤处理:第一是打印来自该方法调用栈的异常信息,二是判断该线程是否是主线程,如果不是,就终止该线程,其他线程继续运行。
3、异常流程的运行过程
有四种场景
a、第一种场景:finally语句不被执行的唯一情况就是先执行了用于终止程序的System.exit()方法
b、第二种场景:return语句用于退出本方法
c、第三种场景:finally代码块虽然return语句之前就被执行,但finally代码块不能通过重新给变量赋值的
方式改变return语句的返回值
d、第四种场景:建议不要在finally代码块中使用return语句