Java业务方法结构

news/2025/2/25 21:32:01/文章来源:https://www.cnblogs.com/linhuaming/p/18737331

目录
  • 1、代码示例
  • 2、代码说明:
  • 3、异常处理:
  • 4、日志记录:
  • 5、自定义异常:

1、代码示例

在Java业务方法中,通常会按照一定的顺序执行多个步骤,以确保代码的可维护性和可读性。以下是一个典型的业务方法结构,包含了你提到的五个步骤:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class BusinessService {private static final Logger logger = LoggerFactory.getLogger(BusinessService.class);public BusinessResult executeBusinessLogic(BusinessRequest request) {// 1. 打印日志logger.info("开始执行业务逻辑,请求参数: {}", request);try {// 2. 参数校验validateRequest(request);// 3. 规则校验validateBusinessRules(request);// 4. 业务处理BusinessResult result = processBusiness(request);// 5. 返回数据logger.info("业务逻辑执行成功,返回结果: {}", result);return result;} catch (IllegalArgumentException e) {logger.error("参数校验失败: {}", e.getMessage());throw e;} catch (BusinessRuleException e) {logger.error("业务规则校验失败: {}", e.getMessage());throw e;} catch (Exception e) {logger.error("业务处理过程中发生异常: {}", e.getMessage(), e);throw new RuntimeException("业务处理失败", e);}}private void validateRequest(BusinessRequest request) {if (request == null) {throw new IllegalArgumentException("请求参数不能为空");}// 其他参数校验逻辑}private void validateBusinessRules(BusinessRequest request) {// 业务规则校验逻辑if (!isValidBusinessRule(request)) {throw new BusinessRuleException("业务规则校验失败");}}private BusinessResult processBusiness(BusinessRequest request) {// 业务处理逻辑BusinessResult result = new BusinessResult();// 处理业务逻辑并设置结果return result;}private boolean isValidBusinessRule(BusinessRequest request) {// 业务规则校验逻辑return true; // 假设校验通过}
}

2、代码说明:

  1. 打印日志:在方法的开始和结束处打印日志,记录请求参数和返回结果,便于后续排查问题。
  2. 参数校验:对传入的参数进行校验,确保参数的有效性。如果参数不合法,抛出IllegalArgumentException
  3. 规则校验:根据业务规则对请求进行校验,确保请求符合业务规则。如果不符合,抛出BusinessRuleException
  4. 业务处理:执行核心的业务逻辑,处理请求并生成结果。
  5. 返回数据:返回处理结果,并在返回前打印日志。

3、异常处理:

  • try-catch块中捕获异常,并根据不同的异常类型打印不同的日志信息。
  • 如果发生异常,可以选择抛出运行时异常或自定义异常,以便上层调用者处理。

4、日志记录:

  • 使用SLF4JLog4j等日志框架记录日志,确保日志信息清晰、可追踪。

5、自定义异常:

  • BusinessRuleException是一个自定义异常类,用于表示业务规则校验失败的情况。
public class BusinessRuleException extends RuntimeException {public BusinessRuleException(String message) {super(message);}
}

通过这种结构化的方式编写业务方法,可以提高代码的可读性、可维护性,并且便于后续的调试和问题排查。

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

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

相关文章

SemanticKernel之Chat

去年写过几过几篇关于SemanticKernel的文章,由于正式发布的版本与之前的版本变化较大,加上前的东京《生成式AI应用开发》活动,想把演示的Demo逐一分享出来,的以再次开启SemanticKernel系统。下面是一个Chat的例子,用户提问,如果本地有固定数据能对应,直接返回,如果没有…

7、添加特效

去除画面logo 复制一份 拖动模糊特效到复制的片段中 右键分离音频或者快捷键【ctrl+shift+s】 删除音频 添加原创特效,特效随机 有音乐的去除音乐 适当拖动放大 调整透明度 开幕特效 三秒 调整参数后,复制双份 画面特效和人物特效二选一 画面特效需要修改参数

Prompt升级

前两篇关于Prompt的文章分别从提示词规则建议和具体框架角度说明了一下Prompt的使用技巧,接下来可以说是对框架式提示词的的进一步升级——结构化提示词。 结构化定义: 对信息进行组织,使其遵循特定的模式和规则,从而方便有效理解信息。 结构化提示词语法:这个结构支持 Mark…

Spring复习-事务

事务概述 Spring事务编程概述 事务是开发中必不可少的东西,使用JDBC开发时,我们使用connnection对事务进行控制,使用MvBatis时,我们使用SqlSession对事务进行控制,缺点显而易见,当我们切换数据库访问技术时,事务控制的方式总会变化,Spring 就将这些技术基础上,提供了统…

Prompt进阶

在Prompt入门里,我们分享了OpenAI官方给出的提示词建议,但这些建议基本上是指导性的,方向性的,概念性的,虽然对我们编写提示词有很大帮助,但究竟我们的提示词好还是不好,效率怎么性,很大程度上要看每个人的理解,和提示词输出。那么有没有一个可操作性的,方法论的,谁…

P1174 打砖块

链接 https://www.luogu.com.cn/problem/P1174 思路刚开始的思路:设置dp[i][j]:前i列使用了j颗子弹,那么递推dpi,j=max(dpi,j,dpi-1,k+maxj-k),然后统计在第i列使用了j-k颗子弹会多出来多少颗,把这些遍历加到前面,见代码。喜提70pts。但是搞不懂哪里错了。 看了评论区的dp:70…

redis - [06] redis-benchmark性能测试

题记部分 001 || 参数含义 002 || 测试100个并发,100000个请求 启动redis-server redis-server /etc/redis.conf 进行性能测试 redis-benchmark -h localhost -p 6379 -c 100 -n 100000

百万架构师第四十三课:Nginx:Nginx 应用实战|JavaGuide

百万架构师系列文章阅读体验感更佳 原文链接:https://javaguide.net 公众号:不止极客 课程目标:Nginx 反向代理功能配置 Nginx 负载均衡实战 Nginx 动静分离配置 Nginx 配置文件分析 Nginx 多进程模型原理 Nginx 高可用集群实战反向代理​ 我们把请求发送到 proxy (代理服务…

大三下每日打卡003

今天配置了python的虚拟环境anaconda想尝试一下yolov8来实现识别

需求评审

需求评审是产品经理日常会议的形式之一,也是一个“公开处刑”的时刻。这篇文章,我们看看作者分享的如何做好一次需求评审的经验,供大家参考。前段时间有小伙伴留言,想聊一下关于需求评审面向不同角色如何处理,以及产品不同生命周期产品工作上有什么区别。我结合自己工作经…

牛客题解 | 对称的二叉树_1

牛客题库题解题目 题目链接 题目的主要信息:判断一棵二叉树是否是镜像,即判断二叉树是否是轴对称图形轴对称:非轴对称:举一反三: 学习完本题的思路你可以解决如下题目: BM28. 二叉树的最大深度 BM29. 二叉树中和为某一值的路径(一) BM32. 合并二叉树 BM33. 二叉树的镜像…

牛客题解 | 字符串变形

牛客题库题解题目 题目链接 题目主要信息:将字符串大小写反转 将整个字符串的所有单词位置反转举一反三: 学会了本题的思路,你将可以解决类似的字符串问题: BM84. 最长公共前缀 BM85. 验证IP地址 方法一:双逆转(推荐使用) 思路: 将单词位置的反转,那肯定前后都是逆序,…