您是否认为有可能记录服务器端异常?
在服务器端考虑这样的代码:
catch (Exception ex) {
throw new IllegalStateException (ex);
}
该异常是由客户端调用引起的。当然,会在客户端注意到异常。有没有办法在服务器端以某种方式处理它,没有捕获运行时异常?某种处理程序,例如,我可以记录异常的堆栈跟踪吗?
有什么想法吗?
答案 0 :(得分:1)
您可以将服务器实例包装在java.lang.reflect.Proxy
中,并在代理中实现服务器端日志记录。只需确保导出代理,而不是服务器实现。
答案 1 :(得分:1)
有些RMI系统属性会自动为您记录服务器端异常。请参阅RMI主页上的链接。
答案 2 :(得分:0)
通常,顶级服务器方法将具有throws Exception
。
如果使用try-catch异常在此方法中包装“do it”代码,并且可以将其记录在那里仍然抛出它。
public Response myServerTopLevelMethod() throws Exception {
try {
myImplCode();
catch (Exception e) {
Log.error(e);
throw e;
}
}
现在您可以选择做什么。基本选项是:
以下是选项2的示例:
public Response myServerTopLevelMethod() throws Exception {
try {
myImplCode();
catch (Exception e) {
Log.error(e);
return new Response("Yikes! Something exploded... we'll look into it.");
}
}
顺便提一下,选项1的“Log + throw”是你想要做的几次之一;在顶级方法。在其他时候,您通常要么 log 或投掷,而不是两者。