"的try-catch"或"抛出"管理Web服务方法中的异常?

时间:2014-06-05 13:28:05

标签: java web-services exception

你们能告诉我在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

非常感谢你!

3 个答案:

答案 0 :(得分:0)

没有真正的优势或劣势。这取决于你想要的实现。 如果它是一个内部实现,那么我会抛出异常本身,以便调用webservice的人知道错误的确切细节。

如果我正在为第三方提供网络服务,我宁愿返回代码本身。

答案 1 :(得分:0)

使用Try-Catch,您将捕获Try-Catch所在方法中的任何异常。使用throws MyException,您将在层次结构中更高的位置抛出异常,这意味着使用您的方法的类/范围必须对异常执行某些操作。

通常这些都是很好的指针:

  1. 只有在您能够以有意义的方式处理它时才能捕获异常

  2. 如果要处理异常,则声明向上抛出异常 当前消费者

  3. 如果它们是由输入参数引起的,则抛出异常(但是 这些通常是未经检查的)
  4. 在你的情况下,我可能会使用Try-Catch并执行一些有意义的异常,也许会将用户路由到错误消息。

答案 2 :(得分:0)

在我看来,使用适当的错误代码处理Webservices中的异常总是更好。即使抛出自定义异常,它最终也会作为SOAP错误异常到达客户端。因此,最好遵循以下准则,以便提供更好的Web服务:

  • 确定可能的错误并分配错误代码和有效说明。这将帮助您区分验证错误,未找到数据错误,运行时错误等
  • 定义您自己的自定义错误代码

    <error> <errorCode/> <errorDesc/> </error>

  • 填充此错误并将其发送回调用应用程序。这将有助于他们以自己的方式处理异常

如上所述传递有意义的错误总是更好,而不是抛出通用的SOAP错误异常。每当您使用标准Web服务时,您都会注意到这一点