在示例中 catch (SentinelRpcException ex) { System.out.println("blocked"); }
没有捕获到SentinelRpcException ,而是打印出了异常信息
com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method sayHello in the service com.orange.service.DemoService. Tried 3 times of the providers [192.168.121.110:20880] (1/1) from the registry 127.0.0.1:8848 on the consumer 192.168.121.110 using the dubbo version 2.6.6. Last error is: Failed to invoke remote method: sayHello, provider: dubbo://192.168.121.110:20880/com.orange.service.DemoService?anyhost=true&application=exueyun-bussiness-sit-consumer&bean.name=com.orange.service.DemoService&category=providers&check=false&dubbo=2.0.2&generic=false&interface=com.orange.service.DemoService&methods=sayHello&pid=66416&protocol=dubbo®ister.ip=192.168.121.110&remote.timestamp=1555470996198&side=consumer&timeout=60000×tamp=1555471008919, cause: com.alibaba.csp.sentinel.slots.block.SentinelRpcException: com.alibaba.csp.sentinel.slots.block.flow.FlowException com.alibaba.csp.sentinel.slots.block.SentinelRpcException: com.alibaba.csp.sentinel.slots.block.flow.FlowException Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException
这是怎么回事
原提问者GitHub用户CjqDy
这个地方有一个workaround,可以参考一下BlockException.isBlockException的实现,往下找cause,并且比较cause里的detailMessage里是否contains SentinelRpcException,就可以了。
原回答者GitHub用户elvislou
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。