为什么我总是在我的异常映射器中获取javax.ws.rs.WebApplicationException而不是实际的异常类:
@Provider
public class PaymentExceptionHandler implements ExceptionMapper<Exception> {
/*
* Maps the Exception object to response Object when any exception is thrown
* within the application.
*/
@Override
public Response toResponse(Exception exception) {
return Response.status(550)
.entity(exception)
.build();
}
}
我不确定这是否已经回答,我找不到。任何帮助将不胜感激。
答案 0 :(得分:0)
您需要将此PaymentExceptionHandler
注册为泽西容器的泽西资源,以了解在响应中发送Exception
类时需要发送此响应。
与投掷new RunTimeExecption(e)
一样,球衣将投掷PaymentExceptionHandler
作为回应。
加载PaymentExceptionHandler
作为球衣资源。
我不知道你是如何通过包扫描或其他方式加载资源的,一种方法如下所示:
@ApplicationPath("/rest")
public class AuthResourceLoader extends Application
{
/* (non-Javadoc)
* @see javax.ws.rs.core.Application#getClasses()
*/
@Override
public Set<Class<?>> getClasses()
{
Set<Class<?>> classes = new HashSet<Class<?>>();
exceptionResource(classes);
return classes;
}
private void exceptionResource(Set<Class<?>> classes)
{
classes.add(PaymentExceptionHandler.class);
}
}