Spring Cloud微服务如何设计异常处理机制?,java项目面试实操

本文探讨了在Spring Cloud微服务中如何设计异常处理机制,以确保对外接口友好且内部调用简洁。建议使用全局异常处理类结合@ControllerAdvice进行异常拦截,并创建统一的异常对象如ApiException和InternalApiException,分别对应外部和内部服务接口。同时,介绍了如何在服务接口控制器层转换业务异常为这些统一异常对象。
摘要由CSDN通过智能技术生成

面向外部的服务接口,我们一般会将接口的报文形式以JSON的方式进行响应,除了正常的数据报文外,我们一般会在报文格式中冗余一个响应码和响应信息的字段,如正常的接口成功返回:

{

“code”: “0”,

“msg”: “success”,

“data”: {

“userId”: “zhangsan”,

“balance”: 5000

}

}

而如果出现异常或者错误,则会相应地返回错误码和错误信息,如:

{

“code”: “-1”,

“msg”: “请求参数错误”,

“data”: null

}

在编写面向外部的服务接口时,服务端所有的异常处理我们都要进行相应地捕获,并在controller层映射成相应地错误码和错误信息,因为面向外部的是直接暴露给用户的,是需要进行比较友好的展示和提示的,即便系统出现了异常也要坚决向用户进行友好输出,千万不能输出代码级别的异常信息,否则用户会一头雾水。对于客户端而言,只需要按照约定的报文格式进行报文解析及逻辑处理即可,一般我们在开发中调用的第三方开放服务接口也都会进行类似的设计,错误码及错误信息分类得也是非常清晰!

而微服务间彼此的调用在异常处理方面,我们则是希望更直截了当一些,就像调用本地接口一样方便,在基于Spring Cloud的微服务体系中,微服务提供方会提供相应的客户端SDK代码,而客户端SDK代码则是通过FeignClient的方式进行服务调用,如: 而微服务间彼此的调用在异常处理方面,我们则是希望更直截了当一些,就像调用本地接口一样方便,在基于Spring Cloud的微服务体系中,微服务提供方会提供相应的客户端SDK代码,而客户端SDK代码则是通过FeignClient的方式进行服务调用,如:

@FeignClient(value = “order”, configuration = OrderClientConfiguration.class, fallback = OrderClientFallback.class)

public interface OrderClient {

//订单(内)

@RequestMapping(value = “/order/createOrder”, method = RequestMethod.POST)

OrderCostDetailVo orderCost(@RequestParam(value = “orderId”) String orderId,

@RequestParam(value = “userId”) long userId,

@RequestParam(value = “orderType”) String orderType,

@RequestParam(value = “orderCost”) int o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值