java - JAX-RS 中的异常处理
问题描述
java 8,春天,休息
我正在尝试捕获来自异常映射器的响应,并在引发异常的调用者中对其进行处理。谢谢。
@Provider
public class CustomerExceptionHandler implements ExceptionMapper<CustomerException>
{
@Override
public Response toResponse(CustomerException exception)
{
return Response.status(Status.BAD_REQUEST).entity(CustomerException.getMessage()).build();
}
}
public class CustomerException extends Exception implements Serializable
{
private static final long serialVersionUID = 1L;
public CustomerException() {
super();
}
public CustomerException(String msg) {
super(msg);
}
public CustomerException(String msg, Exception e) {
super(msg, e);
}
}
public class ExceptionDemo{
public void getExceptionResponse(){
//do something
throw new CustomerException("Something is wrong");// CustomerExceptionHandler is going to return me a Response, how can I capture the response here?
//capture response and do something with it
}
}
解决方案
我不确定ExceptionMapper
他们的工作方式是否像你认为的那样。
当端点中的某些代码抛出异常,并且该异常一直渗透出端点并返回到容器本身(在本例中为 Spring)时,则查询已注册ExceptionMapper
的 s 以查看它们是否与抛出的异常匹配,并且调用相关的 onepublic Response toResponse(T e) {}
方法将其转换为Response
.
不会作为端点代码的ExceptionMapper
一部分被调用,并且您将无法根据其结果采取行动,Response
因为它尚未被调用。您只需要将throw
异常排除在端点之外。
推荐阅读
- r - 从数据框中打印值,而不是行号
- javascript - 如何将两个数组组合成一个具有键值对的对象?
- python - 如何使用 openCV 或 Python 从图像中删除黑色边界框
- sql - 过程中的 DBMS_UTILITY.COMPILE_SCHEMA
- c++ - 为什么 switch 和 if 语句与转换运算符的行为不同?
- apache-spark - 自定义 /src/main/resources/log4j.properties 未在 Spark 2.2 中加载
- javascript - Js:解析 .mov 元数据
- c# - 防止在逗号分隔的字符串中替换已替换的字符串
- android - FusedLocationProviderClient api异常,同时申请位置更新坐标
- emacs - Emacs 单引号字符串中的通用模式被突出显示