我正在写一个网络服务。所以我有:
public interface MyService extends Remote
{
public void service1();
}
public class MyServiceImpl implements MyService
{
public void service1() { /* do something that sometimes throws an exception */ }
}
我正在阅读RemoteException
。我应该将service1()
中的所有代码包装在try..catch
中,以包裹RemoteException
中的任何异常吗?然后我必须为service2()
,service3()
执行此操作。
让调用者(在我的情况下是一个servlet)更好吗?
究竟应该包含在远程异常中 - 服务器中发生的一切?或只是处理远程调用过程的异常(反射,序列化等)?
答案 0 :(得分:1)
您的代码不应该抛出RemoteException
,如果在访问远程服务时发生错误,应该为WS框架保留它。
大多数框架都会捕获Exception
,将其包装为SOAP-Fault,客户端通常会通过抛出SOAP-Fault的错误消息来处理另一个异常(请记住客户端可能不会是Java)。
这样做的最后一点是你应该抛出特定于已经发生的错误的异常,让框架发送适当的响应。
答案 1 :(得分:0)
据我所知,你只需要声明方法在接口中抛出RemoteException
。
public interface MyService extends Remote {
public void service1() throws RemoteException;
}