iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >FeignClient服务器抛出异常客户端处理方案
  • 605
分享到

FeignClient服务器抛出异常客户端处理方案

2024-04-02 19:04:59 605人浏览 安东尼
摘要

目录FeignClient服务器抛出异常客户端处理feign异常拦截器FeignClient异常合集Mark问题1问题2FeignClient服务器抛出异常客户端处理 在使用feig

FeignClient服务器抛出异常客户端处理

在使用feign进行远程方法调用时,如果远程服务端方法出现异常,客户端有时需要捕获,并且把异常信息返回给前端,而如果在开启熔断之后,这个异常会被消化,所以说,如果希望拿到服务端异常,

feign.hystrix.enable需要设置为false,而当不开熔断时,我们也有几种方法把拿到服务端的异常信息,下面总结一下。

feign异常拦截器

注册一个Bean对象,当feign调用出现异常的时候,会触发这个方法:

import com.test.JSONUtils;
import feign.Response;
import feign.Util;
import feign.codec.ErrorDecoder;
import io.test.BadRequestException;
import io.test.InternalServerErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import static feign.FeignException.errorStatus;


@Configuration
public class FeignClientErrorDecoder implements ErrorDecoder {
    private Logger logger = LoggerFactory.getLogger(FeignClientErrorDecoder.class);

    @Override
    public Exception decode(String methodKey, Response response) {
        Map<String, Object> jsonBody = new HashMap<>();
        jsonBody.put("message", "Internal server error");
        try {
            String body = Util.toString(response.body().asReader());
            jsonBody = JsonUtils.toMap(body);
        } catch (IOException e) {
            logger.error("feign.IOException", e);
        }
        assert jsonBody != null;
        if (response.status() >= 400 && response.status() < 500) {
            throw new BadRequestException(jsonBody.get("message").toString());
        }

        if (response.status() >= 500) {
            throw new InternalServerErrorException(jsonBody.get("message").toString());
        }

        return errorStatus(methodKey, response);
    }
}

注意,使用这个方式,需要在熔断器关闭时才起作用,因为它们的执行过程是,先走这个拦截器,再走熔断的fallback,所以这个异常会被熔断吞掉,返回状态为200,返回值为你的fallback的默认值。

FeignClient异常合集Mark

问题1

feignClient调用报异常cause:Content-Type cannot contain wildcard type ‘*’

是因为远程调用的时候入参识别不了application/json

解决办法:在方法上加上类型即可consumes = MediaType.APPLICATION_JSON_VALUE

 @RequestMapping(value = "/xxx/xxx/xxx/xxx/xxx/xxx/result",method = RequestMethod.GET,  consumes = MediaType.APPLICATION_JSON_VALUE)
    ResponseResult xxx(TaskParam taskParam);

问题2

fallback 与fallbackFactory的使用

fallbackFactory:抛出异常可查看,一般看里面抛出的异常日志即可判断远程调用的问题所在。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: FeignClient服务器抛出异常客户端处理方案

本文链接: https://www.lsjlt.com/news/151657.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • FeignClient服务器抛出异常客户端处理方案
    目录FeignClient服务器抛出异常客户端处理feign异常拦截器FeignClient异常合集Mark问题1问题2FeignClient服务器抛出异常客户端处理 在使用feig...
    99+
    2024-04-02
  • JS异常抛出和处理的方法是什么
    今天小编给大家分享一下JS异常抛出和处理的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。抛出异常在 js 中,有时...
    99+
    2023-07-04
  • MySQL中异常的客户端连接怎么处理
    这篇文章主要介绍MySQL中异常的客户端连接怎么处理,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景1: 程序反馈数据库出现了max_connection的错误, 导致client...
    99+
    2024-04-02
  • JS中异常抛出和处理方法图文详解
    目录抛出异常抛出的表达式类型基本数据类型对象类的实例对象Error 类的实例对象Error 的子类处理异常js中常见的系统异常:总结抛出异常 在 js 中,有时候我们需要处理一些异常...
    99+
    2022-11-16
    js 抛出异常 js的异常处理 js捕获异常的方法
  • Spring Cloud 注册 Nacos2.x 版本RPC客户端连接抛 Server check fail, please check server ** 异常解决方案
    在 nacos-client:2.x 中,如果启动了naocs2.x的服务不修改任何端口的情况下是可以正常连接的。 在docker下运行了 nacos 并且指定跟主机绑定 “8848:8848” 端口...
    99+
    2023-09-07
    java 开发语言 spring cloud spring boot
  • 亚马逊客户服务器异常
    检查网络连接:确保您的计算机与亚马逊的服务器之间的网络连接正常,可以尝试重新启动网络连接或重新配置路由器。 检查服务器设置:确保您的服务器设置正确,并且所有客户端和服务都可以正确地访问它。 检查客户端设置:检查客户端的设置,包括账户、订单...
    99+
    2023-10-27
    亚马逊 异常 客户
  • linux samba服务器客户端的详细配置方案
    本篇内容介绍了“linux samba服务器客户端的详细配置方案”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!配置服务器端的打印机及其共享:...
    99+
    2023-06-17
  • C++ 技术中的异常处理:抛出异常的最佳时机和方法是什么?
    异常处理用于处理 c++++ 中不可恢复的错误。最佳抛出时机是:内存分配失败;文件操作失败;数据库连接失败;参数无效。c++ 提供了多种抛出异常的方法:throw 表达式、throw 异...
    99+
    2024-05-09
    c++ 异常处理
  • SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式
    目录SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理例如:为了方便统一验证,基于切面来实现数据的验证全局异常处理异常原因:java.lang.refle...
    99+
    2024-04-02
  • Android客户端与服务端数据加密传输方案详解
    目录前言数据加密方案数据加密细节AES加解密RSA公钥加密总结前言 在网络通信中,通信传输数据容易被截取或篡改,如果在传输用户隐私数据过程中,被不法分子截取或篡改,就可能导致用户受...
    99+
    2023-01-03
    Android客户端服务端数据加密传输 Android 数据加密传输
  • 如何理解Fedora DNS服务器客户端
    这篇文章将为大家详细讲解有关如何理解Fedora DNS服务器客户端,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。DNS有很多值得学习的地方,这里我们主要介绍DNS服务器,包括介绍DNS服务...
    99+
    2023-06-16
  • 云服务器处理异常
    资源耗尽:如果您的云服务器服务已经使用了一段时间并且您的操作系统或硬件资源都已经达到了预设的最大容量,那么服务器可能会出现资源耗尽的情况,这时服务器会发送警报,提示您可能会无法继续提供服务。 DNS解析失败:如果您的云服务器的DNS解析出...
    99+
    2023-10-27
    异常 服务器
  • mysql客户端连接服务器出错怎么解决
    这篇文章主要介绍了mysql客户端连接服务器出错怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql客户端连接服务器出错怎么解决文章都会有所收获,下面我们一起来看看...
    99+
    2023-01-04
    mysql 服务器
  • 联通服务器代理阿里云客户端
    作为阿里云的联通服务器代理,我们的目标是帮助用户轻松连接和管理阿里云服务器。通过阿里云客户端,用户可以轻松地将自己的服务器与其他设备连接起来,并实现更加便捷的访问和管理。同时,阿里云客户端也提供了一些便捷的工具,如云盘、云同步、备份等,使用...
    99+
    2023-10-27
    阿里 客户端 服务器
  • Python静态Web服务器面向对象处理客户端请求
    目录概述实现步骤1.定义web服务器类初始化类处理客户端请求启动web服务器进行工作代码实现概述 把Web服务器抽象成一个类,方法初始化,在初始化中建立套接字对线。提供一个开启Web...
    99+
    2024-04-02
  • 轻量级云服务器出现异常如何处理
    轻量级云服务器出现异常处理的方法:1、出现404错误,一般是请求地址写错或网站后端程序没有被安装成功,造成了死链,检查一下域名和链接地址是否正确;2、出现500错误,主要网站本身的配置文件出错或代码出现问题,检查一下网站相关的代码和设置是否...
    99+
    2024-04-02
  • 如何处理服务器上客户端断开连接的情况
    在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天编程网就整理分享《如何处理服务器上客户端断开连接的情况》,聊...
    99+
    2024-04-05
  • 租用台湾云服务器出现异常怎么处理
    租用台湾云服务器出现异常的处理方法:1、出现404错误,一般是请求地址写错或网站后端程序没有被安装成功,造成了死链,检查一下域名和链接地址是否正确;2、出现500错误,主要网站本身的配置文件出错或代码出现问题,检查一下网站相关的代码和设置是...
    99+
    2024-04-02
  • 租用台湾云服务器出现异常如何处理
    当租用的台湾云服务器出现异常时,可以按照以下步骤处理: 确认问题:首先要确认异常的具体表现和影响,例如服务器无法访问、性能下降等情...
    99+
    2024-04-26
    台湾云服务器 云服务器
  • 亚马逊客服服务器异常的解决方法
    1. 检查网络连接 首先,您需要确保您的网络连接正常。检查您的网络连接是否稳定,并确保您的设备能够正常访问其他网站和服务。如果您的网络连接存在问题,您可以尝试重新启动您的路由器或联系您的网络服务提供商以解决问题。 2. 清除浏览器缓存和C...
    99+
    2023-10-27
    亚马逊 客服 解决方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作