gpt4 book ai didi

java - Jax-RS( Jersey )上下文中 WebApplicationException 和 WebServiceException 的区别

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:21 26 4
gpt4 key购买 nike

我正在创建 Jersey Web 服务,我发现自己使用了上述两种异常类型。 WebServiceException 的构造函数允许您传递一个 String 作为原因,而 WebApplicationException 允许传入一个 HTTP 状态代码。包括构造函数的差异,拥有这两种异常类型的目的是什么?

谢谢。

最佳答案

WebApplicationException 是一种您可以停止执行 REST 资源并向您的客户端发送一些有意义的信息的方法。对于我一直在做的事情,我对这个异常进行了子类化,这样它就有一个实现,可以将 JSON 作为错误消息发送给客户端。如果出现错误情况,假设文件丢失,我可能会这样做:

}catch(FileNotFoundException ex){
throw new MyException(ex.getMessage());

在客户端这会产生如下内容:

{ errorCode: 56, errorMessage: 'could not find file "input.txt"' };

http://download.oracle.com/javaee/6/api/javax/ws/rs/WebApplicationException.html '

WebServiceException 是 Jersey 的根运行时异常,即它最常见的结果是您的资源崩溃并导致 HTTP 500。

http://download.oracle.com/javaee/5/api/javax/xml/ws/WebServiceException.html

所以简短的回答是第一个异常是您可能会抛出的,而另一个是您希望永远不会抛出的。 :P

一个例子:

public class MyException extends WebApplicationException {

public MyException(JSONObject jsonObject) {
super(Response.status(Response.Status.OK)
.entity(jsonObject)
.type(MediaType.APPLICATION_JSON)
.build());
}

然后从您代码中的任何地方您想要停止执行并将错误信息发送给客户端执行此操作:

}catch(FileNotFoundException ex){
throw new MyException(new JSONObject(){{ this.put("errorCode", 4); .... }});

关于java - Jax-RS( Jersey )上下文中 WebApplicationException 和 WebServiceException 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7959274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com