gpt4 book ai didi

java - JAX-RS Jersey 处理 WebApplicationException

转载 作者:行者123 更新时间:2023-12-01 23:08:33 28 4
gpt4 key购买 nike

JAX-RS Jersey 处理 WebApplicationException

嗨,

我尝试使用 MyWebApplicationExceptionMapper 处理 WebApplicationException,但它不起作用。

@Path("/v1")
public class MyHandler {

@POST
@Path("/test")
@Consumes({ MediaType.APPLICATION_JSON})
@Produces({ MediaType.APPLICATION_JSON})
public Response getTouchpointPost(@QueryParam("key") KeyParam KeyParam){
..
}
}
public class KeyParam extends AbstractParam<String> {

public KeyParam(String param) {
super(param);
}

@Override
protected String parse(String param) {
return checkKey(param);
}

private String checkKey(String key) {
// throws IllegalArgumentException if {key expression} is false
com.google.common.base.Preconditions.checkArgument(isValid(key), "Invalid key %s", key);
return key;
}
}

checkKey() 抛出 IllegalArgumentException 时,它会被 catch block 捕获并作为 WebApplicationException 重新抛出。

    public abstract class AbstractParam<V> {
// some code
public AbstractParam(@JsonProperty("param") String param) {
// some code

} catch (Exception e) {
LOGGER.warn("Exception decoding parameter", e);
throw new WebApplicationException(onError(param, e));
}
}


@Provider
public class MyWebApplicationExceptionMapper extends
BaseExceptionMapper<WebApplicationException> {

@Override
public int getStatus(WebApplicationException e) {
return e.getResponse().getStatus();
}
}

我有一个映射器类,它试图捕获 WebApplicationException。但这个映射器类无法捕获 WebApplicationException 异常。

有人可以帮我解决这个问题吗?此 BaseExceptionMapper 是一个抽象类,它实现 ExceptionMapper 并生成自定义错误消息,该消息作为 Response 对象返回。

我不确定我在这里做错了什么。

这是堆栈跟踪。

java.lang.IllegalArgumentException: Invalid siteKey ONE
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:148)
..

最佳答案

对于那些想知道有一个通用的抽象异常映射器的人:

 public abstract class GenericExceptionMapper  <E extends Throwable>  implements ExceptionMapper<E> {

protected abstract Response handleResponse(E e);

@Override
public Response toResponse(E e) {
return handleResponse(e);
}
}

@Provider
public class UserExceptionMapper extends GenericExceptionMapper<UserException>{
@Override
protected Response handleResponse(UserException e) {
return Response.status(Response.Status.BAD_REQUEST).entity(e).build();
}

}

关于java - JAX-RS Jersey 处理 WebApplicationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386462/

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