java中异常的相关知识
来源:互联网 发布:mac照片视频导出 编辑:程序博客网 时间:2024/06/06 17:21
异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
常见的异常类型
Try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
下面是个测试程序
public class FinallyTest {public static void main(String[] args) {System.out.println(new FinallyTest().test());;}static int test(){int x = 1;try{x++;return x;}finally{++x;}}}
结果是2,意思是finally里的代码没执行?
肯定执行了
你在finally里加一条输出语句你就知道了
但结果为什么会是2呢?
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
在转去之前,try中先把要返回的结果存放到不同于a的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量a进行了改变,但是不会影响返回结果。
它应该使用栈保存返回值。
主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数要返回结果时,先把结果放在罐子里,然后再将程序逻辑返回到主函数。所谓返回,就是子函数说,我不运行了,你主函数继续运行吧,这没什么结果可言,结果是在说这话之前放进罐子里的。
当有第二个return的时候,主函数就会将上一个结果覆盖,
所以对于上面第二种情况的输出结果:一开始main函数的空罐子接收的是i=1,后面执行finally,将i=2返回,所以最后输出的结果是i=2
Error和Exception有什么区别
Error类和Exception类的父类都是throwable类,他们的区别是:
Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ),运行时异常;ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。
常见的异常;
ArrayIndexOutOfBoundsException数组下标越界异常,
ArithmaticException 算数异常 如除数为零
NullPointerException 空指针异常
IllegalArgumentException不合法参数异常
- Java程序中异常的相关知识
- java中异常的相关知识
- Java异常的相关知识
- Java基础回顾 : 异常的相关知识
- 异常 的相关知识
- 异常的相关知识
- java中关于异常得相关知识整理
- java中自动注释的相关知识
- JAVA中的异常处理相关知识
- Java中JDBC相关知识
- java中JVM相关知识
- Java中类的继承相关的知识
- 关于java中类的相关知识(部分)
- 介绍Java中Integer的缓存相关知识
- Java Vector的相关知识
- Java入门的相关知识
- 学习Java的相关知识
- java的socket相关知识
- C 逆波兰表达式
- 关于面试和学习方法的一篇好文章
- C++面试题(50—100)
- backbone 中require跟define的区别
- _IOR, _IOW解释
- java中异常的相关知识
- jquery+ajax实现前端新增和修改验证
- leetcode_228. Summary Ranges ? 待解决
- springmvc mybatis shiro构建cms+UC浏览器文章相关功能
- OAuth2笔记
- qt-everywhere-opensource-src-5.6.2 编译
- windows环境开机自启consul的配置
- [LeetCode]3. Longest Substring Without Repeating Characters
- libevent2.0网络通讯实例--luotuo44版本调试问题记录