捕获所有异常,并在泽西岛中返回自定义错误
2022-09-01 23:12:02
我想在球衣休息服务中捕捉所有意想不到的异常。因此,我写了一个异常映射器:
@Provider
public class ExceptionMapper implements javax.ws.rs.ext.ExceptionMapper<Exception> {
private static Logger logger = LogManager.getLogManager().getLogger(ExceptionMapper.class.getName());
@Override
public Response toResponse(Exception e) {
logger.log(Level.SEVERE, e.getMessage(), e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Internal error").type("text/plain").build();
}
}
映射器捕获了所有异常。因此,我不能写:
public MyResult getById(@PathParam("id")) {
if (checkAnyThing) {
return new MyResult();
}
else {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
}
这是由映射器捕获的。现在我必须写:
public Response getById(@PathParam("id") {
if (checkAnyThing) { {
return Response.ok().entity(new MyResult()).build();
}
else {
return Response.status(Response.Status.NOT_FOUND).build();
}
}
这是捕获所有意外异常并在球衣中返回错误(错误代码)的正确方法吗?还是有其他(更正确)的方法?