RemoteExceptions をスローするときに例外チェーンを使用するのは悪い考えですか? 次のようなことを行う RMI サーバーがあります。
public Object doSomething() throws RemoteException
{
try
{
return getData();
}
catch (CustomException ex)
{
throw new RemoteException(ex);
}
}
クライアントで ClassNotFoundException が原因で UnmarshallException が発生しています。プラス面としては、CustomException 自体がエクスポートされていることがわかります。残念ながら、この男の奥深くにある別の例外はエクスポートされません。これが ClassNotFoundException の出番です。階層は次のようなものだと思います。
RemoteException -> CustomException -> SQLException -> NotExportedException
問題は、CustomException がエクスポートされることは保証できますが、下位レベルの例外がエクスポートされることは保証できないということです。
このため、RemoteExceptions で例外チェーンを使用することは決してありません。代わりに、おそらくサーバー側でスタック トレースをログに記録し、「原因」例外がチェーンされていないプレーンなバニラ RemoteException をスローする必要があると思います。以前にこの状況に対処した人はいますか?