1 问题原因
com.alibaba.cloud.sentinel.feign.SentinelInvocationHandler#invoke 方法中会隐藏掉异常信息,将异常信息保存到ContextUtil.getContext()的curEntry中,源代码如下:
@Override
public Object invoke(final Object proxy, final Method method, final Object[] args)
throws Throwable {
// 省略部分代码
Object result;
MethodHandler methodHandler = this.dispatch.get(method);
if (target instanceof Target.HardCodedTarget) {
// 省略部分代码
if (methodMetadata == null) {
result = methodHandler.invoke(args);
}
else {
String resourceName = methodMetadata.template().method().toUpperCase()
+ ":" + hardCodedTarget.url() + methodMetadata.template().path();
Entry entry = null;
try {
ContextUtil.enter(resourceName);
entry = SphU.entry(resourceName, EntryType.OUT, 1, args);
result = methodHandler.invoke(args);
}
catch (Throwable ex) {
// fallba