关于Java面试中容易犯错的try{} catch{} finally{}组合
来源:互联网 发布:网络平台代理协议 编辑:程序博客网 时间:2024/06/05 21:49
还是前天去面试java中的一道面试题,说真的,这个题目前几天好像好看到过,没想到面试的时候还是打错了。
题目是这样的
class FaceDemo06{ public static int fun() { int result = 5; try { result = result / 0; return result; } catch (Exception e) { System.out.println("Exception"); result = -1; return result; } finally { result = 10; System.out.println("i am in finally"); } } public static void main(String[] args) { int x=fun(); System.out.println(x); } }
问最后输出的结果是什么。
对题目进行分析,首先找到程序入口main()函数。
可以看到,我们只需要知道x的值就可以结题了。要想知道x的值,按照程序运行的顺序,是跳转到fun()函数。
在fun函数中的try语句很明显出现了除0异常,这个是后要抛出异常,执行catch语句。
此时,执行catch语句后,输出的内容应该是:Exception,然后返回-1给x。但是我们知道这个组合的finally语句是无论如何都会执行的。此时又得到一个返回值10,并输出内容:i am in finally。
那么问题来了,最后x的值到底是-1还是10呢。
重新回到catch语句,我们发现已经 return -1 了 。这说明,在main()函数中的x已经得到了一个值-1。此时main()函数按照顺序应该往下执行了,所以又得到了输出内容:-1。
最后的结果就是:
Exception
i am in finally
-1
阅读全文
0 0
- 关于Java面试中容易犯错的try{} catch{} finally{}组合
- Java面试里关于try,catch,finally,return容易犯错的一个问题
- 关于java中try catch finally的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- Java中关于try-catch-finally的总结
- Java中关于try、catch、finally的总结
- Java中try,catch,finally的用法
- Java中try,catch,finally的用法
- Java中try,catch,finally的用法
- Java中try、catch、finally的用法
- Java中try,catch,finally的用法
- Java中try,catch,finally的用法
- Java 中 try...catch...finally
- java中try-catch-finally
- Java中Try/catch/finally
- Java异常处理中try,catch,finally的各种组合用法
- 做一个@font-face添加自己想要的字体样式,且用@keyframes做移动、旋转、阴影动画效果
- 2017年中感悟
- noip2006 金明的预算方案
- 给a标签添加点击事件却无效
- 优雅的实现多类型列表的Adapter补充
- 关于Java面试中容易犯错的try{} catch{} finally{}组合
- java入门第一季—记事本开发java.
- springMVC-笔记010-拦截器
- spring学习笔记——Spring概述
- jdk1.8新特性-接口
- GitHub上README.md教程
- Seq2Seq非常好的代码(机器翻译、对话生成等):漫谈四种神经网络序列解码模型【附示例代码】
- 线程之画不同颜色的线
- Spring Boot 基础