Java ExceptionMapper不处理我的异常。JBOSS

Java ExceptionMapper不处理我的异常。JBOSS,java,servlets,exception-handling,jboss,Java,Servlets,Exception Handling,Jboss,我有一个定制的exceptionapper,它捕获我的定制RuntimeException。问题是当我抛出自定义的异常时,异常apper不会被调用 我已在我的ExceptionMapper类中设置了@Provider,并在web.xml中注册为: <context-param> <param-name>resteasy.providers</param-name> <param-value>com.package.myMapper&

我有一个定制的
exceptionapper
,它捕获我的定制
RuntimeException
。问题是当我抛出自定义的
异常时,
异常apper
不会被调用

我已在我的
ExceptionMapper
类中设置了
@Provider
,并在
web.xml
中注册为:

<context-param>
    <param-name>resteasy.providers</param-name>
    <param-value>com.package.myMapper</param-value>
</context-param>

我做错了什么?..

尝试让您的ResponseException扩展异常,而不是RuntimeException。似乎resteasy和jboss正在捕获您的异常,而不是您的提供商,我遇到了完全相同的问题,并解决了扩展异常的问题:


    public class ResponseException extends Exception {

        public ResponseException() {
            super();
        }


        public ResponseException(String msg) {
            super(msg);
        }

        public ResponseException(String msg, Exception e) {
            super(msg, e);
        }
    }

以及异常映射器的示例:


    import org.apache.log4j.Logger;

    import javax.ws.rs.core.Response;
    import javax.ws.rs.ext.ExceptionMapper;
    import javax.ws.rs.ext.Provider;

    @Provider
    public class BadRequestExceptionMapper implements ExceptionMapper {

        private static final Logger log = Logger.getLogger(BadRequestExceptionMapper.class);

        @Override
        public Response toResponse(BadRequestException e) {

            log.info("Bad request: " + e.getMessage());

            return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
        }
    }


    public class ResponseException extends Exception {

        public ResponseException() {
            super();
        }


        public ResponseException(String msg) {
            super(msg);
        }

        public ResponseException(String msg, Exception e) {
            super(msg, e);
        }
    }


    import org.apache.log4j.Logger;

    import javax.ws.rs.core.Response;
    import javax.ws.rs.ext.ExceptionMapper;
    import javax.ws.rs.ext.Provider;

    @Provider
    public class BadRequestExceptionMapper implements ExceptionMapper {

        private static final Logger log = Logger.getLogger(BadRequestExceptionMapper.class);

        @Override
        public Response toResponse(BadRequestException e) {

            log.info("Bad request: " + e.getMessage());

            return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
        }
    }