gpt4 book ai didi

java - RESTful( Jersey )Web 服务中的 WebApplicationException 与 ExceptionMapper

转载 作者:行者123 更新时间:2023-11-30 10:25:47 25 4
gpt4 key购买 nike

我正在学习 REST 网络服务。我需要一些关于在 Jersey 中处理自定义异常的说明。通过使用 WebApplicationExceptionExceptionMapper,您可以throw 自定义 Exception。我的问题是在哪种情况下我们会选择 WebApplicationExceptionExceptionMapper。它们之间有什么区别?

我已经完成了一些教程,我发现 ExceptionMapper 就像 Generic。

@Provider
class MyWrapper implements ExceptionMapper<MyPojoClass>
{
}

还有一个区别是,

因为 @Provider Jersey 只会在默认情况下捕获此异常,如果还发生任何其他异常。

还有其他区别吗?

MyExceptionMapper.java

package com.katte.galaxe.exception;

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


public class MyExceptionMapper implements ExceptionMapper<MyCustomException>
{

@Override
public Response toResponse(MyCustomException errMsg) {
ErrorMessage msg = new ErrorMessage(errMsg.getMessage(),1100);
return Response.status(Status.NOT_FOUND)
.type(MediaType.APPLICATION_XML)
.entity(msg)
.build();
}
}

MyWebApplicationException.java

package com.katte.galaxe.exception;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

public class MyWebApplicationException extends WebApplicationException{

private static final long serialVersionUID = -5788907118191114665L;

public MyWebApplicationException(ErrorMessage msg) {
super(Response.status(Status.NOT_FOUND)
.entity(msg)
.type(MediaType.APPLICATION_XML)
.build());
}
}

最佳答案

WebApplicationException 和 ExceptionMapper 不能进行比较,因为它们有不同的用途。相反,它们旨在一起使用以获得更好的响应策略。

想象一下在服务请求时遇到异常的情况。假设您在访问数据库时遇到 SQLException。在这种情况下,可以使用 ExceptionMapper 将 SQLException 映射到适当的 5xx 响应,而不是将原始异常传播给最终用户。

WebApplicationException

Runtime exception for applications.

This exception may be thrown by a resource method, provider or StreamingOutput implementation if a specific HTTP error response needs to be produced. Only effective if thrown prior to the response being committed.

ExceptionMapper

Contract for a provider that maps Java exceptions to Response.

关于java - RESTful( Jersey )Web 服务中的 WebApplicationException 与 ExceptionMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45944973/

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