什么是异常 ?
异常是在程序中导致程序中断的一种指令流.
异常处理机制
1.发生了异常-> jvm会根据的异常情况,实例化一个异常对象,包含了异常信息
2.如果此时异常发生在try语句,就会执行catch中的代码,如果没有捕获异常,则会将异常抛出给调用方法者;
3如果一直到main方法没有捕获异常,则自动将异常抛给了main的调用者,jvm
4 jvm对异常信息进行了相应,将异常信息输出到了控制台,中断程序
异常体系结构
java中有一个父类 Throwable
两个子类: Error
表示错误,不能用代码解决.
Exception:
受检异常 : 编译时异常,必须要捕获;
非受检异常(RunTimeException) 运行时异常 ,不是必要捕获
面试常见问题
- try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
答:finally中的代码会执行 -------------------------------
除了两种情况:(finally不会被执行)
在执行到finally之前,断电/或者退出jvm:System.exit(0);
详解 执行流程:
1)先将返回值存储起来,等待返回,
2)执行finally代码块
3)将之前存储的返回值,返回出去;
注意:基本数据类型存储的是值,引用数据类型存的是地址值
所以 finally中该改不了基本数据类型的值,可以修改引用类型地址中的内容.