面试官问我 ,try catch 应该在 for 循环里面还是外面?

首先 , 话说在前头,

没有什么 在里面 好 和在外面好  或者 不好的 一说。

本篇文章内容:

  1. 使用场景

  2. 性能分析

  3. 个人看法

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循环显然被中断");  
    }  
}  

结果:

图片

效果结论:

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循环显然继续执行");  
        }  
    }  
}  

结果:

图片

效果结论:

try  catch  在 for 循环 里面 的时候, 如果 for循环过程中出现了异常,异常被catch抓掉,不影响for循环 继续执行。

ps:

在面试的时候,如果真的连上面这个在外面在里面使用效果都没说对,那,真的会去等通知了。

但是 之前不会的看官,看完这一篇, 肯定会了。

2. 性能

时间上, 其实算是无差别。

内存上, 如果没出异常,其实也是无差别。

但是如果出现了异常, 那就要注意了。

注意点是什么 ? 看代码:

我们简单用

Runtime runtime = Runtime.getRuntime();  
long memory = runtime.freeMemory();  

来统计一下内存消耗情况:

图片

结论:

也就是说, try catch 放在 for 循环里面 ,因为出现异常不会终止 for循环。所以如果真的存在大批量业务处理全是异常,有那么一定的内存消耗情况。

如果说代码没出错的话, try catch 在 for 里面 和 外面 ,都是几乎没区别的。

为啥, 因为 异常try catch 其实一早编译完就标记了 如果从哪儿(from)出现异常,会直接去到(to)的那行代码去。

  • Exception table : 当前函数程序代码编译涉及到的异常;

  • type :异常类型;

  • target:表示异常的处理起始位;

  • from:表示 try-catch 的开始地址;

  • to:表示 try-catch 的结束地址;

图片

所以如果不考虑业出错,是否终止循环, 这个try catch 放里放外没啥区别。

3. 个人看法

其实就是看业务。我需要出现异常就终止循环的,就放外头;

不需要终止循环,就搞里头。

但是要注意一点就是,别在for循环里面去 查库调用第三方啥的,这些操作,如果必要,需要慎重考虑了。(别什么都搞里头!!!)

最后说一句(求关注!别白嫖!)

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。

关注公众号:woniuxgg,在公众号中回复:笔记  就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(一)whatsapp 语音通话基本流程

经过了一整年的开发测试&#xff0c;终于将whatsapp 语音通话完成&#xff0c;期间主要参考webrtc的源码来实现.下面简要说一下大致的步骤 XMPP 协商 发起或者接受语音通话第一步是发起XMPP 协商&#xff0c;这个协商过程非常重要。下面是协商一个包 <call toxxxs.whatsap…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 4 套

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&…

背包DP模板

01背包 01背包-1 #include <bits/stdc.h> using namespace std;const int N 1e5 10; int n, m, f[N][N], v[N], w[N];int main() {cin >> n >> m;for (int i 1; i < n; i) {cin >> v[i] >> w[i];}for (int i 1; i < n; i) {for (int…

构建多语言数字资产交易平台和秒合约系统:从概念到实现

多语言交易所开发定制秒合约平台币数字所网站制作一条龙搭建 第一步&#xff1a;需求分析 在开始搭建多语言交易所和秒合约平台之前&#xff0c;需要进行详细的需求分析&#xff0c;包括以下几个方面&#xff1a; 功能需求&#xff1a;确定交易所需要提供的功能&#xff0c;包…

要创建企业百度百科,需要注意以下技巧和原则。

&#xfffd;&#xfffd;&#xfffd;词条内容技巧 词条排版必须美观&#xff0c;内容分段&#xff0c;然后制作副标题。例如&#xff0c;一个企业的名称分为小标题&#xff0c;如企业介绍、企业文化、企业发展、企业历史和企业新闻。这不仅可以给读者一个良好的阅读&#xf…

Learn OpenGL 30 SSAO

SSAO 我们已经在前面的基础教程中简单介绍到了这部分内容&#xff1a;环境光照(Ambient Lighting)。环境光照是我们加入场景总体光照中的一个固定光照常量&#xff0c;它被用来模拟光的散射(Scattering)。在现实中&#xff0c;光线会以任意方向散射&#xff0c;它的强度是会一…

python 第一次作业

因为笔者有一些 c/c 语言的基础&#xff0c;所以应该学 python 会稍微简单一些 格式化输出的时候&#xff0c;保留2位小数的格式是 # 假设输出 a &#xff0c;并且 a 保留 2 位小数 print(%.2f%a)输入 输入的时候所有的输入都是字符串类型&#xff0c;我们需要进行类型转换 …

RHCE- 4-Web服务器(2)

基于https协议的静态网站 概念解释 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。 HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果攻击者截取了Web浏览器和网站服务器之间的传输报文&#xff0c;就可以直接读懂其中…

应用层协议 - HTTP

文章目录 目录 文章目录 前言 1 . 应用层概要 2. WWW 2.1 互联网的蓬勃发展 2.2 WWW基本概念 2.3 URI 3 . HTTP 3.1 工作过程 3.2 HTTP协议格式 3.3 HTTP请求 3.3.1 URL基本格式 3.3.2 认识方法 get方法 post方法 其他方法 3.3.2 认识请求报头 3.3.3 认识请…

day8 ARM

main.c #include"key_inc.h"//封装延时函数void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}}}int main(){//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf("in main pro\n");delay(1000);}re…

基于鹦鹉优化器(PO)的无人机路径规划

该优化算法是2024年新发表的一篇SCI二区论文&#xff0c;具有良好的实际应用和改进意义。一键运行main函数代码自动保存高质量图片 1、鹦鹉优化器 摘要&#xff1a;随机优化方法作为一种有效的技术在当代研究中得到了显著的突出&#xff0c;有效地解决了复杂的优化挑战。本文…

java的一些内部小知识,类与对象的关系

目录 1. java2. 类与对象的关系 1. java test.java ---- javac --> Test.class ---- java-----> 内存 ----> cpu 源文件 二进制代码 所有正在运行的软件都在内存中有自己的内存空间 jvm —>运行java程序的&#xff0c;java虚拟机 main(); // 内部调用run()run(i…

Fiddler抓包工具之Fiddler界面主菜单功能介绍

Fiddler界面主菜单功能介绍 File菜单 File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获&#xff08;capture&#xff09;,也可以加载或存储捕获的流量 &#xff08;1&#xff09;Capture Traffic&#xff1a;默认勾选&#xff0c;勾选此项才可抓包&#xff…

什么洗地机值得推荐?高口碑品牌深度测评严选

在所有清洁电器中&#xff0c;洗地机的清洁力是大家公认的&#xff0c;像性能好的机子&#xff0c;家里的日常清洁基本都是一遍过&#xff0c;像有娃的&#xff0c;有狗子的家庭&#xff0c;再炸裂的场景&#xff0c;三两下就能还原如初&#xff01;如果你现在正在为了如何挑选…

《自动机理论、语言和计算导论》阅读笔记:p5-p27

《自动机理论、语言和计算导论》学习第2天&#xff0c;p5-p27总结&#xff0c;总计23页。 一、技术总结 1.集合 (1)commutative law of union. (2)distribute law of union. 2.归纳法(induction) & 演绎法(deduction) (1)归纳法&#xff1a;从许多个别的事实或原理中…

C++基础之继承续(十六)

一.基类与派生类之间的转换 可以把派生类赋值给基类可以把基类引用绑定派生类对象可以把基类指针指向派生类对象 #include <iostream>using std::cin; using std::cout; using std::endl;//基类与派生类相互转化 class Base { private:int _x; public:Base(int x0):_x(…

(执行上下文作用域链)前端八股文修炼Day4

一 作用域作用域链 作用域&#xff08;Scope&#xff09;是指程序中定义变量的区域&#xff0c;作用域规定了在这个区域内变量的可访问性。在 JavaScript 中&#xff0c;作用域可以分为全局作用域和局部作用域。 全局作用域&#xff1a;在代码中任何地方都可以访问的作用域&am…

systemd-journal(一)之journalctl命令详解

文章目录 写在前面概述描述不传递参数传递一个或多个匹配参数示例 源选项用法--system, --user-M, --machine-m, --merge-D DIR, --directoryDIR--fileGLOB--rootROOT--imageIMAGE--image-policypolicy--namespaceNAMESPACE 过滤选项用法-S, --since, -U, --until举例&#xff…

Navicat15安装教程

直接开始Navicat15的安装教程 下载好上面的资源&#xff0c;解压后得到以下文件 1. 安装 Navicat ①双击 navicat150_premium_cs_x64.exe&#xff0c;准备安装 Navicat 15 ②无脑一直下一步就行&#xff0c;到下图画面就安装成功了。 2.安装完成以后&#xff0c;先不要启动…

力扣--并查集1631.最小体力消耗路径

这题将图论和并查集联系起来。把数组每个位置看成图中的一个节点。 这段代码的主要思路是&#xff1a; 遍历地图中的每个节点&#xff0c;将每个节点与其相邻的下方节点和右方节点之间的边加入到边集合中&#xff08;因为从上到下和从下到上他们高度绝对值一样的&#xff0c;…