Má idéia para encadear exceções com o RMI?
É uma má idéia usar o encadeamento de exceção ao lançar RemoteExceptions? Temos um servidor RMI que faz algo assim:
public Object doSomething() throws RemoteException
{
try
{
return getData();
}
catch (CustomException ex)
{
throw new RemoteException(ex);
}
}
Estou recebendo UnmarshallException causado por uma ClassNotFoundException no meu cliente. No lado positivo, acontece que a própria CustomException É exportada. Infelizmente, outra exceção no fundo desse cara NÃO é exportada, e é aí que a ClassNotFoundException entra. Acho que a hierarquia é algo como isto:
RemoteException -> CustomException -> SQLException -> NotExportedException
O problema que vejo é que, embora possamos garantir a exportação da CustomException, não podemos garantir que existam exceções de nível inferior.
Estou inclinado a nunca usar encadeamento de exceção com RemoteExceptions por causa disso. Em vez disso, acho que provavelmente devo registrar o rastreamento de pilha no lado do servidor e lançar uma RemoteException simples e simples, sem exceção de "causa" vinculada a ele. Alguém já lidou com essa situação antes?