面试官问我 ,try catch 应该在 for 循环里面还是外面?
1. 使用场景为什么要把 使用场景 摆在第一个 因为本身try catch 放在 for循环 外面 和里面 如果出现异常产生的效果是不一样的。怎么用就需要看好业务场景去使用了。① try catch 在 for 循环 外面代码示例 public static void tryOutside() { try { for (int count 1; count 5; count) { if (count 3) { //故意制造一下异常 int num 1 / 0; } else { System.out.println(count: count 业务正常执行); } } } catch (Exception e) { System.out.println(try catch 在for 外面的情形 出现了异常for循环显然被中断); } }结果img效果结论try catch 在 for 循环 外面 的时候 如果 for循环过程中出现了异常 那么for循环会终止。② try catch 在 for 循环 里面代码示例 public static void tryInside() { for (int count 1; count 5; count) { try { if (count 3) { //故意制造一下异常 int num 1 / 0; } else { System.out.println(count: count 业务正常执行); } } catch (Exception e) { System.out.println(try catch 在for 里面的情形 出现了异常for循环显然继续执行); } } }结果img效果结论try catch 在 for 循环 里面 的时候 如果 for循环过程中出现了异常异常被catch抓掉不影响for循环 继续执行。ps在面试的时候如果真的连上面这个在外面在里面使用效果都没说对那真的会去等通知了。但是 之前不会的看官看完这一篇 肯定会了。2. 性能时间上 其实算是无差别。内存上 如果没出异常其实也是无差别。但是如果出现了异常 那就要注意了。注意点是什么 看代码我们简单用Runtime runtime Runtime.getRuntime(); long memory runtime.freeMemory();来统计一下内存消耗情况img结论也就是说 try catch 放在 for 循环里面 因为出现异常不会终止 for循环。所以如果真的存在大批量业务处理全是异常有那么一定的内存消耗情况。如果说代码没出错的话 try catch 在 for 里面 和 外面 都是几乎没区别的。为啥 因为 异常try catch 其实一早编译完就标记了 如果从哪儿from出现异常会直接去到to的那行代码去。Exception table: 当前函数程序代码编译涉及到的异常type异常类型target表示异常的处理起始位from表示 try-catch 的开始地址to表示 try-catch 的结束地址img所以如果不考虑业出错是否终止循环 这个try catch 放里放外没啥区别。3. 个人看法其实就是看业务。我需要出现异常就终止循环的就放外头不需要终止循环就搞里头。但是要注意一点就是别在for循环里面去 查库调用第三方啥的的这些操作如果必要需要慎重考虑了。别什么都搞里头
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2427993.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!