WebApplicationException和WebServiceException在Jax-RS(泽西岛)上下文中的区别
2022-09-04 01:24:57
我正在创建一个泽西岛 Web 服务,我发现自己使用了上述两种异常类型。WebServiceException的构造函数允许您传递一个字符串作为WebApplicationException允许传入HTTP状态代码的原因。包括构造函数差异,拥有这两种异常类型的目的是什么?
谢谢。
我正在创建一个泽西岛 Web 服务,我发现自己使用了上述两种异常类型。WebServiceException的构造函数允许您传递一个字符串作为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是泽西岛的根运行时异常,即它最常导致资源崩溃并导致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); .... }});