为什么80%的码农都做不了架构师?>>>   

几天前在Stack overflow上看到一个题:

I have a small theoretical problem with try-catch constructions.

I took a practical exam yesterday about Java and I don't understand following example:

try {try {System.out.print("A");throw new Exception("1");} catch (Exception e) {System.out.print("B");throw new Exception("2");} finally {System.out.print("C");throw new Exception("3");}
} catch (Exception e) {System.out.print(e.getMessage());
}

The question was "what the output will look like?"

I was pretty sure it would be AB2C3, BUT suprise suprise, it's not true.

The right answer is ABC3 (tested and really it's like that).

My question is, where did the Exception("2") go?

我以为因为finally子句始终会执行,因此在抛出Exception("3");的时候将catch中的异常覆盖了,今天突然又想起来到底catch中的异常是否还存在呢,搜了一下,csdn上飞天金刚给出了一个分析:

http://blog.csdn.net/sureyonder/article/details/5560538

自己写了一个其实跟上面的一样

 try{try{System.out.println("b");throw new IllegalArgumentException("2");}catch(IllegalArgumentException e){System.out.println("c");throw new UnsupportedOperationException("3");}finally{System.out.println("d");throw new IndexOutOfBoundsException("4");}}catch(IndexOutOfBoundsException e){ System.out.println(e.getMessage());e.printStackTrace();}

查看了一下程序的ExceptionTable

Exception table:
      from    to  target type
          0    18    18   Class java/lang/IllegalArgumentException
          0    38    37   any
          0    56    56   Class java/lang/IndexOutOfBoundsException

三个exception都在table里面,只不过抛出的只是最后一个而已。其他两个都被java当做垃圾给扔了,而且第二个没有被catch的exception类型未知。exception table是什么原理呢?有待查询。

转载于:https://my.oschina.net/liufq/blog/160318

Java 异常丢失及finally子句相关推荐

  1. java异常—— finally 子句+带资源的 try语句

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常-- finally 子句+带资源的 try语句 的相关知识: [1] final ...

  2. java 异常堆栈日志分析_Java 进阶之路:深入解读 Java 异常堆栈丢失原因

    在应用程序的开发和维护中,通常需要借助运行日志来监控和定位问题.其中,在日志中打印异常堆栈信息对于定位问题极为重要,因此,作为一名工程师,对打印异常堆栈应该不陌生.笔者在实践中曾遇到一个奇怪的现象: ...

  3. 我可以在同一个catch子句中捕获多个Java异常吗?

    本文翻译自:Can I catch multiple Java exceptions in the same catch clause? In Java, I want to do something ...

  4. java异常对象引用变量_Java面向对象编程-异常处理

    第九章 异常处理 异常情况会改变正常的流程,导致恶劣的后果,为了减少损失,应该事先充分预料所有可能出现的异常,然后采取以下措施: 首先考虑避免异常,彻底杜绝异常的发生:如果不能完全避免,则尽可能地减少 ...

  5. Java基础10:全面解读Java异常

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  6. 最最最全面的Java异常面试及解答

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | ThinkWon 来源 | blog.csdn ...

  7. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  8. 有效处理 Java 异常三原则

    Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮.易于调试. 异常之所以是一种强大的调试手段,在于其回答了以下三个问题: 什么出了错? 在哪出的错? 为什么出错? ...

  9. java 异常 最佳实践_处理Java异常的10种最佳实践

    java 异常 最佳实践 在本文中,我们将看到处理Java异常的最佳实践. 用Java处理异常不是一件容易的事,因为新手很难理解,甚至专业的开发人员也可能浪费时间讨论应该抛出或处理哪些Java异常. ...

最新文章

  1. linux命令之diff,whereis,locate,pwd,cat,grep,touch,find
  2. Linux 删除文件夹和文件的命令(强制删除包括非空文件)
  3. UVA 572 BFS 图论入门
  4. PAT (Basic Level) Practise - 继续(3n+1)猜想
  5. mysql.5.5.21_centos6下mysql-5.5.21的安装
  6. react(92)--批量删除进行置空操作
  7. 爬虫下载百度贴吧图片
  8. java获取达梦数据库_记一次对达梦数据库的优化过程
  9. 在Windows系统下,Nginx反向代理缓存配置
  10. 如何学习财务数据分析,有哪些好工具?
  11. itest Tutorial
  12. Python 搭建excel数据分析环境(符Demo源码)
  13. 尽量使用notifyAll,而不用notify
  14. [回忆]2007年的GDNT研发广东北电辞职信.
  15. 【wxPython】wxPython之窗口操作
  16. 组建无线网络的六条思路
  17. 全城最浪漫的颜值影城在这
  18. 给打算创建一个欢乐的婚礼建议
  19. Windows10合并非相邻磁盘或分区到系统C盘方法
  20. vue 页面跳转404_出现404页面怎么办?应该如何处理404页面?

热门文章

  1. .NET深入 c#数据类型2
  2. 对Spring的IoC和DI最生动的解释
  3. 使用SQL语句添加和删除约束
  4. MySQL Innodb数据库性能实践——VARCHAR vs CHAR
  5. react调用api等待返回结果_React新Context API在前端状态管理的实践
  6. 算法学习(三)堆排序
  7. Android 4.0 ICS SystemUI浅析——StatusBar结构分析
  8. Java基础提高学习笔记1
  9. 几米的一段话,献给所有小郁闷的人
  10. mysql中的union用法以及子查询综合应用