Java &引用;试一试“接球”;或;抛出;管理Web服务方法内部的异常?

Java &引用;试一试“接球”;或;抛出;管理Web服务方法内部的异常?,java,web-services,exception,Java,Web Services,Exception,你们能告诉我在web服务方法中管理异常的好方法吗?(SOAP/REST/) 你能告诉我在下列情况下的优点和缺点吗 使用Try-Catch块并发送错误代码。例如,在休息的情况下: try{ // something that triggers exception here... return javax.ws.rs.core.Response.status(500).build(); }catch(..){ } 使用adding在web服务方法的原型中抛出MyExceptio

你们能告诉我在web服务方法中管理异常的好方法吗?(SOAP/REST/)

你能告诉我在下列情况下的优点和缺点吗

  • 使用Try-Catch块并发送错误代码。例如,在休息的情况下:

    try{
        // something that triggers exception here...
        return javax.ws.rs.core.Response.status(500).build();
    }catch(..){
    }
    
  • 使用adding
    在web服务方法的原型中抛出MyException


非常感谢你

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


如果我为第三方使用web服务,我更希望返回代码本身。

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

一般来说,这些都是很好的指针:

  • 只有当您能够以有意义的方式处理异常时,才能捕获异常

  • 如果要由 当前的消费者

  • 如果异常是由输入参数引起的(但是
    这些通常是未经检查的)

  • 在您的情况下,我可能会使用Try-Catch并对异常执行一些有意义的操作,可能会将用户路由到错误消息

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

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

      
      

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


    如上所述传递有意义的错误总是比抛出一般的SOAP错误异常要好。每当您使用标准Web服务时,您都会注意到这一点。在你的休息方法中尝试捕捉并没有什么错。这完全取决于您的业务案例需要向客户端发送什么http代码(未找到资源/403禁止/http成功状态和业务错误)