我从我的应用程序中抛出异常MyCustomException
。 (EJB层)
我在Web服务层中有一个异常映射器,如下所示 -
package net.webservices;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import net.common.MyCustomException;
@Provider
public class EJBExceptionMapper implements
ExceptionMapper<net.common.MyCustomException> {
public Response toResponse(MyCustomException exception) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
我已在web服务层的web.xml
注册了我的映射器,如下所示 -
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>net.webservices.EJBExceptionMapper</param-value>
</context-param>
EJBExceptionMapper
未抓住MyCustomException
。但它被Web服务实现的catch块捕获。
可能是什么问题?
注意:我不想使用getProviderFactory().addExceptionMapper()
答案 0 :(得分:1)
我不知道为什么你的解决方案不起作用(但我从未使用过RESTeasy,只使用过Jersey)。无论如何,扩展WebApplicationException
可能更简单。这样,您就不必注册提供者:
public class MyCustomException extends WebApplicationException {
public MyCustomException() {
super(Response.status(Response.Status.BAD_REQUEST).build());
}
}
答案 1 :(得分:0)
您需要在catch块中抛出异常(类型为MyCustomException)并向方法签名添加“Throws MyCustomException”