使用feign client消费者能接收到提供者抛出的异常吗

Blade 未结 1 718
jdodo
jdodo 2021-03-18 17:03

一、该问题的重现步骤是什么?

比如 xxxService的方法fun()中调用了xxxClient.save(Object o)方法,

然后xxxClient.save(Object o)方法抛了异常,

这时xxxService的方法fun()能接收到异常吗

伪代码如下

xxxService{

    void fun(){

        xxxClient.save(o);//这里能接收到异常吗?

    }

}

xxxClientImpl  implements xxxClient{

    void save(Object o){

        throw new RuntimeException();

    }

}

1条回答
  •  admin
    admin (楼主)
    2021-03-19 16:44

    如果你要接收生产者抛出的异常来进行下一步判断,正确的做法是在生产者进行try catch,然后返回对应的code,消费者再进行下一步判断。

    而熔断机制主要是用来处理不可控的异常诞生,出现异常后,会走到熔断的逻辑,fallback类再返回特定的值以确保服务正常运行。

    如果一定要获取异常,需要自行拓展,具体代码可见如下截图

    image.png

    image.png

    0 讨论(0)
提交回复