最近在看Router RPC相关的代码,特别是对于异常处理这块。
在RouterRpcClient#invoke里,使用了Method类的invoke方法,即通过反射的方式去调用某个对象的方法。
然后catch住InvocationTargetException异常,根据异常的cause和具体的Retry Policy做不同的重试策略。
// 本文的核心目标是这个obj的真实身份
try {
return method.invoke(obj, params);
} catch