目录
- 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、代码说明:
- 打印日志:在方法的开始和结束处打印日志,记录请求参数和返回结果,便于后续排查问题。
- 参数校验:对传入的参数进行校验,确保参数的有效性。如果参数不合法,抛出
IllegalArgumentException
。 - 规则校验:根据业务规则对请求进行校验,确保请求符合业务规则。如果不符合,抛出
BusinessRuleException
。 - 业务处理:执行核心的业务逻辑,处理请求并生成结果。
- 返回数据:返回处理结果,并在返回前打印日志。
3、异常处理:
- 在
try-catch
块中捕获异常,并根据不同的异常类型打印不同的日志信息。 - 如果发生异常,可以选择抛出运行时异常或自定义异常,以便上层调用者处理。
4、日志记录:
- 使用
SLF4J
或Log4j
等日志框架记录日志,确保日志信息清晰、可追踪。
5、自定义异常:
BusinessRuleException
是一个自定义异常类,用于表示业务规则校验失败的情况。
public class BusinessRuleException extends RuntimeException {public BusinessRuleException(String message) {super(message);}
}
通过这种结构化的方式编写业务方法,可以提高代码的可读性、可维护性,并且便于后续的调试和问题排查。