抛出RemoteExceptions时使用异常链接是一个坏主意吗?我们有一个RMI服务器,它执行以下操作:
public Object doSomething() throws RemoteException
{
try
{
return getData();
}
catch (CustomException ex)
{
throw new RemoteException(ex);
}
}
Run Code Online (Sandbox Code Playgroud)
我在客户端中遇到由ClassNotFoundException引起的UnmarshallException.从好的方面来看,事实证明CustomException本身是导出的.不幸的是,这个人内部的另一个异常是没有导出,这是ClassNotFoundException的来源.我认为层次结构是这样的:
RemoteException - > CustomException - > SQLException - > NotExportedException
我看到的问题是,即使我们可以保证导出CustomException,我们也无法保证任何较低级别的异常.
因为这个原因,我倾向于永远不要使用RemoteExceptions进行异常链接.相反,我认为我应该在服务器端记录堆栈跟踪并抛出一个简单的vanilla RemoteException,并没有链接到它的"cause"异常.以前有人处理过这种情况吗?