分享一段测试try catch 执行顺序和那些代码后续执行,那么不执行的代码:

 @Testpublic void testTryCatch(){try {System.out.println(" 外层 try !" );//Integer.parseInt(null);try {System.out.println(" 外层 try的 内层 try " );Integer.parseInt(null);}catch (Exception ex2) {Integer.parseInt(null);System.out.println(" 外层 try的 内层 catch " );}finally {Integer.parseInt(null);System.out.println(" 外层 try的 内层 finally");}System.out.println("外层 try 异常之后执行!");Integer.parseInt(null);}catch (Exception ex) {try {System.out.println(" 内层 try " );Integer.parseInt(null);}catch (Exception ex2) {System.out.println(" 内层 catch " );}finally {System.out.println(" 内层 finally");}System.out.println("外层 catch " );}finally {System.out.println("外层 finally!");}}

通过注释 Integer.parseInt(null); 完成自己想要跑异常的点,完后看后续处理的顺序。

总结:抛出异常的点,后续代码不执行,然后找最近的catch,执行catch和finally,然后再往外层执行。

但是如果catch内部再次出现异常,会往外层抛,直到找到最近的catch。所以在使用嵌套trycatch的时候需要注意的地方就是,哪里会抛出异常,异常的顺序,那些后续可能不会执行。

再分享一段spring的代码

if (this.registrar.hasTasks() && this.registrar.getScheduler() == null) {Assert.state(this.beanFactory != null, "BeanFactory must be set to find scheduler by type");try {// Search for TaskScheduler bean...this.registrar.setTaskScheduler(this.beanFactory.getBean(TaskScheduler.class));}catch (NoSuchBeanDefinitionException ex) {logger.debug("Could not find default TaskScheduler bean", ex);// Search for ScheduledExecutorService bean next...try {this.registrar.setScheduler(this.beanFactory.getBean(ScheduledExecutorService.class));}catch (NoSuchBeanDefinitionException ex2) {logger.debug("Could not find default ScheduledExecutorService bean", ex);// Giving up -> falling back to default scheduler within the registrar...}}
}

最后说一下个人的观点,尽量避免使用嵌套异常处理工作。除非逻辑简单,有一定的可读性,不然会极大的影响可读性,另外就是避免一些后续处理逻辑异常。

try catch嵌套执行顺序测试相关推荐

  1. Unity脚本在层级面板中的执行顺序测试3

    断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ...

  2. 细琢磨,try catch finally 执行顺序与返回值

    try catch finally 常见格式如下: try{//应用代码}catch(Exception e){//异常捕捉处理}finally{//资源释放.流关闭等等 } 通常执行顺序: try有 ...

  3. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试

    最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...

  4. 多个for语句嵌套执行顺序_阿里真实面试题解析之实现多个线程顺序执行的几种方式...

    前几天有一位同事在阿里一面的时候被问到这么一个多线程问题:如何保证多个线程的顺序执行.当时他没有回答上来,所以为了避免大家以后遇到同样的面试题还是回答不上来,今天我们就来分析解答下这个问题. 问题缘由 ...

  5. Promise—关于catch(你真的了解catch的执行顺序吗)

    一.问题 今天突然被同事问到一个问题,以下代码怎么输出: Promise.all([new Promise(res => res(0)), new Promise((res, rej) => ...

  6. c# Parallel.For 并行编程 执行顺序测试

    因为有个for 实际执行结果尽管是按照for里边的顺序执行,但处理器让哪个分线程先执行,谁先处理完就不一定了. 对于要求结果需要先后顺序的,比如对text内容的操作, 用并行 Parallel.For ...

  7. for语句嵌套执行顺序_C语言笔记 | for语句嵌套时的运行顺序

    for语句在C程序中的出场频率是相当高的,重要程度不言而喻.今天向大家分享for语句在嵌套时的具体运行顺序.其实,在一开始学习C语言的时候,我们的老师就告诉我们看懂程序的重要性,就是要让自己像机器一样 ...

  8. try catch finally 执行顺序问题

    public static void main(String[] args) {System.out.println(abc());}public static Integer abc(){Syste ...

  9. try { } catch{ } finally{ } 执行顺序总结

    publicclass TestTry { publicstaticvoid main(String[] args) { TestTry t = new TestTry(); System.out.p ...

最新文章

  1. Mongodb的范式化和反范式化
  2. Struts2_概述
  3. 利用fnd_conc_global.set_req_globals设置子请求的Parent Request ID
  4. C 这些东西的内存管理
  5. 三分钟学会缓存工具DiskLruCache
  6. 如何实现wpf的多国语言
  7. python编程入门指南-编程入门指南
  8. createbitmap 旋转90度_如何旋转的位图90度
  9. 利用反射和元数据编写的通用更新和通用查询
  10. 在html中做表格以及给表格设置高宽字体居中和表格线的粗细
  11. Codeforces Round #364 (Div. 1) 700B(树)
  12. 毕业设计!Python实现学生教师刷脸签到系统
  13. TDD (test driver development)测试驱动开发
  14. Linux设置串口波特率等参数
  15. 宽带连接工具[bat]
  16. 记录一次GeoTIFF文件二进制源码阅读
  17. 拜师——python基础入门—第3大节课—列表,排序,revered逆序,max,min,sum——day15
  18. 在计算机上知道手机密码,不知道密码查手机通话记录:傻瓜式教程
  19. 写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!
  20. 西部数据推出10TB容量监控级硬盘

热门文章

  1. js的计时事件. 圆形时钟
  2. 营销战略永恒的母题之――爱情
  3. 【有利可图网】PS实战系列:PS制作渐变风格扁平插画壁纸
  4. ubuntu 20.04/22.04下,两个显示屏设置不同缩放比例
  5. 关于阵列发射端的波束形成(相控阵)研究与仿真实践
  6. 优酷怎么上传视频 优酷如何上传视频
  7. 自定义一个仿Spinner
  8. 郭海鷹導師大學鑒賞課程延伸知識點之2019年6月6日薈萃
  9. 【数据结构】栈(实现+原码)
  10. 洛谷 P1095 守望者的逃离 题解 (附题目)