Closed rickey17 closed 1 year ago
sofa-rpc hessian2 generic对自定义的Java Throwable类型,会反序列化成了Generic Object,然后被当作正常处理
自定义的Java Throwable类型比如: public class MockError extends RuntimeException {
public MockError() { super(); } public MockError(String message) { super(message); } public MockError(String message, Throwable cause) { super(message, cause); } public MockError(Throwable cause) { super(cause); }
} 反序列化的结果变成了:
这种情况对网关/代理等没有scheme的组件特别不优化,容易把异常当作成功进行处理。
1、如果客户端和服务端都能load对应的自定义的Java Throwable类型,那么需要反序列化成对应的类型 1、如果客户端和服务端有类型兼容问题(服务端存在自定义的Java Throwable类型,但是客户端不存在该类型或者有兼容性问题),那么需要反序列化成通用的Java Exception类型
java -version
Describe the bug
sofa-rpc hessian2 generic对自定义的Java Throwable类型,会反序列化成了Generic Object,然后被当作正常处理
自定义的Java Throwable类型比如: public class MockError extends RuntimeException {
} 反序列化的结果变成了:![image](https://user-images.githubusercontent.com/20285551/196891573-dca6fefe-4704-44d3-8af9-669b309ebb1c.png)
这种情况对网关/代理等没有scheme的组件特别不优化,容易把异常当作成功进行处理。
Expected behavior
1、如果客户端和服务端都能load对应的自定义的Java Throwable类型,那么需要反序列化成对应的类型 1、如果客户端和服务端有类型兼容问题(服务端存在自定义的Java Throwable类型,但是客户端不存在该类型或者有兼容性问题),那么需要反序列化成通用的Java Exception类型
Environment
java -version
):1.8