Обработка исключений в JAX-RS - PullRequest
0 голосов
/ 28 января 2020

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
  }
}

1 Ответ

1 голос
/ 30 января 2020

Я не уверен, ExceptionMapper работает так, как вы думаете.

Когда какой-то код в конечной точке выдает исключение, и это исключение просачивается из конечной точки и обратно. в самом контейнере (в данном случае Spring), , затем регистрируются ExceptionMapper, чтобы узнать, соответствуют ли они выброшенному исключению, и вызывается соответствующий метод public Response toResponse(T e) {}, чтобы преобразовать его в Response.

ExceptionMapper не вызывается как часть вашего кода конечной точки, и вы не сможете выполнить действие на основе его результирующего Response, поскольку оно еще не было называется. Вам просто нужно throw исключение из конечной точки.

...