gpt4 book ai didi

java - 使用来自另一个异常的堆栈跟踪初始化异常?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:11 25 4
gpt4 key购买 nike

我有客户端-服务器系统。它们通过 RMI 进行通信,因此涉及到序列化/反序列化。服务器根据请求向客户端发送响应。如果发生异常,它会在响应中设置。

但是,如果服务器端发生异常,而客户端不知道。所以我需要包装原始异常,但为了调试目的保留堆栈跟踪。有没有更优雅的解决方案?

//response from server to client
class Response {
private MyException e;

public void set(MyException e) {
this.e = e;
}
}

//some other code
catch (MyException e) {
response.set(e);
} catch (Exception e) {
//could be exception which does not exist at client
//so I can not just set because it would cause ClassNotFoundException at client
response.set(new MyException(e.getMessage() + ": " + e.getStackTrace()));
}

API 似乎只支持设置原因,由于上述问题我不能。我可以在不设置原因的情况下设置另一个异常的堆栈跟踪吗?

最佳答案

您可以考虑使用 setStackTrace() 方法,例如:

Throwable originalException = ...;
Throwable clientException = ...;
clientException.setStackTrace(originalException.getStackTrace());

stacktrace 元素本身似乎只包含字符串,因此对于不了解特殊服务器类的客户端来说,这应该不会造成问题。

关于java - 使用来自另一个异常的堆栈跟踪初始化异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com