相关疑难解决方法(0)

JAX-RS使用异常映射器

我已经读过,我可以创建一个javax.ws.rs.ext.ExceptionMapper将抛出的应用程序异常映射到Response对象的实现.

我创建了一个简单的示例,如果持久化对象时手机长度超过20个字符,则抛出异常.我期望将异常映射到HTTP 400(错误请求)响应; 但是,我收到HTTP 500(内部服务器错误),但有以下异常:

java.lang.ClassCastException: com.example.exception.InvalidDataException cannot be cast to java.lang.Error
Run Code Online (Sandbox Code Playgroud)

我错过了什么?任何意见是极大的赞赏.

异常映射器:

@Provider
public class InvalidDataMapper implements ExceptionMapper<InvalidDataException> {

    @Override
    public Response toResponse(InvalidDataException arg0) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }

}
Run Code Online (Sandbox Code Playgroud)

例外类:

public class InvalidDataException extends Exception {

    private static final long serialVersionUID = 1L;

    public InvalidDataException(String message) {
        super(message);
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

实体类:

@Entity
@Table(name="PERSON")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Person {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ID")
    private Long id;

    @Column(name="NAME")
    private String name;

    @Column(name="PHONE")
    private …
Run Code Online (Sandbox Code Playgroud)

java exception-handling jax-rs jersey java-ee

32
推荐指数
1
解决办法
5万
查看次数

标签 统计

exception-handling ×1

java ×1

java-ee ×1

jax-rs ×1

jersey ×1