你们能告诉我在Web服务方法中管理异常的好方法吗? (SOAP / REST /..)
您能告诉我以下情况的优缺点:
使用Try-Catch块并发送错误代码。例如,在REST的情况下:
try{
// something that triggers exception here...
return javax.ws.rs.core.Response.status(500).build();
}catch(..){
}
在Web服务方法的原型中添加throws MyException
非常感谢你!
答案 0 :(得分:0)
没有真正的优势或劣势。这取决于你想要的实现。 如果它是一个内部实现,那么我会抛出异常本身,以便调用webservice的人知道错误的确切细节。
如果我正在为第三方提供网络服务,我宁愿返回代码本身。
答案 1 :(得分:0)
使用Try-Catch,您将捕获Try-Catch所在方法中的任何异常。使用throws MyException,您将在层次结构中更高的位置抛出异常,这意味着使用您的方法的类/范围必须对异常执行某些操作。
通常这些都是很好的指针:
只有在您能够以有意义的方式处理它时才能捕获异常
如果要处理异常,则声明向上抛出异常 当前消费者
在你的情况下,我可能会使用Try-Catch并执行一些有意义的异常,也许会将用户路由到错误消息。
答案 2 :(得分:0)
在我看来,使用适当的错误代码处理Webservices中的异常总是更好。即使抛出自定义异常,它最终也会作为SOAP错误异常到达客户端。因此,最好遵循以下准则,以便提供更好的Web服务:
定义您自己的自定义错误代码
<error>
<errorCode/>
<errorDesc/>
</error>
填充此错误并将其发送回调用应用程序。这将有助于他们以自己的方式处理异常
如上所述传递有意义的错误总是更好,而不是抛出通用的SOAP错误异常。每当您使用标准Web服务时,您都会注意到这一点