京东面试官问我,你在catch块中写业务代码吗?

文章目录

  • 面试题背景
  • 我的理解
  • 实际运用场景

面试题背景

京东二面,面试官主要考察软实力吧。问了几个问题:

  1. 你觉得什么样的代码是好代码?
  2. 平时你是如何做系统稳定性建设的?
  3. 你在catch块中写过业务代码吗?

本文主要是谈谈个人对第三个问题的理解。

我的理解

先说结论:个人觉得在Java中的catch代码块中编写业务逻辑代码是可以的,但是尽量不要是复杂的业务逻辑。
Java中catch代码块用于捕获和处理异常,以便在出现异常时执行相应的逻辑。通常情况下,catch代码块应该专注于处理异常情况,而不是包含大量的业务逻辑代码。
以下是一些考虑因素:

  1. 异常处理:catch代码块的主要目的是捕获并处理异常。它应该关注于异常处理的逻辑,例如记录日志、发送警报、操作状态等。
  2. 代码可读性和维护性:将业务逻辑代码与异常处理代码分离通常会使代码更具可读性和维护性。将业务逻辑放在catch代码块中可能会使代码变得混乱和难以理解。
  3. 单一责任原则:遵循单一责任原则,将不同的功能聚焦在不同的代码块中。将异常处理与业务逻辑分开可以提高代码的可重用性和可测试性。

然而,在某些情况下,在catch代码块中编写一些简单的业务逻辑是可以接受的,特别是当异常处理和业务逻辑之间存在直接的联系时。但是,如果业务逻辑较为复杂,建议将其封装成单独的方法,以保持代码的清晰性和可读性。
总而言之,建议将catch代码块保持简洁、专注于异常处理,将业务逻辑代码放在适当的位置,以提高代码的可读性和可维护性。
不到万不得已不要在catch中写业务逻辑。在Java中,catch代码块用于捕获和处理异常,以便在出现异常时执行相应的逻辑。但是一些简单的业务逻辑是可以的。

实际运用场景

例如,在执行一个采集任务时,如果在采集过程中发生了异常,可能需要将任务状态标记为失败,以便后续处理。在这种情况下,在catch代码块中修改任务状态为失败是一种合理的做法。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比特币普通地址、隔离见证(兼容)、隔离见证(原生)、Taproot 地址傻傻分不清楚

我们在使用比特币钱包的时候,可以看到各种地址类型:普通地址、隔离见证(兼容)、隔离见证(原生)、Taproot 地址。 看得我们一脸懵逼,为什么会有这么多种类型的地址? 它们之间都有什么…

选修-单片机作业第1/2次

第一次作业 第二次作业 1、51 系列单片机片内由哪几个部分组成?各个部件的最主要功能是什么? 51系列单片机的内部主要由以下几个部分组成,每个部件的主要功能如下: 1. **中央处理器(CPU)**:这是…

图片上传组件

el-upload图片上传 背景代码 背景 项目需要多张图片上传回显,图片上传后返回图片ID,不返回url,需要通过图片ID获取token然后再拼接成图片下载的URL。选择el-upload组件进行开发。 file-list:文件列表,上传下载都需要…

线程池的执行流程

线程池是一种常见的并发编程模式,用于管理和复用线程以执行异步任务。其执行流程通常包括以下步骤: 初始化线程池: 在使用线程池之前,首先需要初始化线程池。在初始化过程中,需要指定线程池的参数,如线程池…

018-VUE框架优点

VUE框架优点 一句话总结 vue 作为一款轻量级框架,门槛低,上手快,简单易学;vue 可以进行组件化开发,数据与结构相分离,使代码量减少,从而提升开发效率,易于理解;vue 最突出…

装windows11+centos双系统时遇到问题及解决方法

从u盘启动提示linpus lite has been blocked 首先下载iso镜像文件,制作u盘启动工具,进行启动,这里进入bios界面进行启动项选择后,虽然已经将usb作为首要启动值 却会出现上图所示被“block”情形 需要在bios界面security选项&…

【数理统计实验(四)】方差分析

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

【动态规划】代码随想录算法训练营第四十四天 |完全背包,518. 零钱兑换 II , 377. 组合总和 Ⅳ (待补充)

完全背包理论基础 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和…

三、实战篇 优惠券秒杀

源码仓库地址:gitgitee.com:chuangchuang-liu/hm-dingping.git 1、全局唯一ID 数据库默认自增的存在的问题: id增长规律明显受单表数据量的限制 场景一分析:id如果增长规律归于明显,容易被用户或者商业对手猜测出一些敏感信息&…

QT画图功能

QT画图功能 每个QWidget都自带的功能,继承了QPainteDevice都可以使用QPainter来进行绘图。 画图需要调用paintEvent绘制事件,paintEvent事件时QWidget类自带的事件。 重写paintEvent事件。(重写事件:如果父类有某个方法&#xff…

Spring Boot 面试题及答案整理,最新面试题

Spring Boot中的自动配置是如何工作的? Spring Boot的自动配置是其核心特性之一,它通过以下方式工作: 1、EnableAutoConfiguration注解: 这个注解告诉Spring Boot开始查找添加了Configuration注解的类,并自动配置它们…

Maven-基本概念

一、Maven是什么 Maven是一个项目管理的工具。根据许晓斌老师的《Maven实战》一书:它主要完成的工作包含三个方面:构建项目、依赖管理、项目信息管理。 二、构建项目 何为构建?在我们编写完代码后,我们会编译、测试、打包、部署…

vue,Promise备忘

网址 https://www.promisejs.org/ 记录 在Vue.js或者其他JavaScript项目中,Promise 是一种处理异步操作的标准机制,用于解决传统的回调地狱问题,提供了一种更优雅、链式调用的编程模型。Promise对象代表一个异步操作的结果,它可…

22.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-加载配置文件到分析工具界面

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:21.配置数据保存…

python操作读取excl并进行数据统计

判断是否单元格是否为数字字母内容 bool(re.match(r^[a-zA-Z0-9]$, row[rownum 1]))判断行是否为float类型 type(row[rownum]) float获取workboot中sheet的名称 sheet.name 场景读取某个文件夹下的excl并统计每个sheet页中存在满足条件的 记录数 import re import os imp…

加快代码审查的 7 个最佳实践

目录 前言 1-保持小的拉取请求 2-使用拉取请求模板 3-实施响应时间 SLA 4-培训初级和中级工程师 5-设置持续集成管道 6-使用拉取请求审查应用程序 7-生成图表以可视化您的代码更改 前言 代码审查可能会很痛苦软件工程师经常抱怨审查过程缓慢,延迟下游任务&…

什么是GoogLeNet,亮点是什么,为什么是这个结构?

GooLeNet 亮点 最明显的亮点就是引入了Inception,初衷是多卷积核增加特征的多样性,提高泛化能力 ,比如,最下边是一个输入层,然后这个输入分别传递给1*1,3 * 3 ,5 * 5和一个最大池化层&#xff…

2024春招和暑期实习全面启动!

大家好,我是小柠檬。2024春招和暑期实习全面启动!最近,我注意到很多同学都在积极投递简历。 3D视觉求职星球 今天给大家推荐我们的3D视觉岗求职星球,里面时常发布大量3D视觉岗位和星球专属内推岗位。 篇幅有限,文节选…

最新全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术深度应用

本文以地下水数值模拟软件GMS操作,本文中强调模块化教学,分为前期数据收集与处理;三维地质结构建模;地下水流动模型构建;地下水溶质运移模型构建和反应性溶质运移构建5个模块;采用全流程模式将地下水数值模…

后端项目访问不了

问题: 后端启动不了,无法访问网站 原因: 1.防火墙没有关 2.有缓存 3、项目没有启动 4、docker没有启动 解决: 先查看进程:docker ps,必须有三个 详细查看:docker ps -a exited代表没有开启…