Я не могу обработать исключение с помощью JAX-RS

#mysql #spring #hibernate #rest #jax-rs

#mysql #весна #переход в спящий режим #rest #jax-rs

Вопрос:

Это класс NullPointerExceptionMapper

 package com.sample.Exceptionhandler;

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;
import response.Message;

@Provider
public class NullPointerExceptionMapper implements ExceptionMapper<NullPointerException> {

    public Response toResponse(NullPointerException ex) {

        Message message=new Message(500,ex.getMessage(),200);
        return Response.status(Status.NOT_FOUND).entity(message)
                .build();
    }
}
  

Это класс Message

 package response;

public class Message {

    private int status;
    private String message;
    private int code;

    public Message() {
    }

    public Message(int status, String message, int code) {
        super();
        this.status = status;
        this.message = message;
        this.code = code;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
  

Это метод контроллера

 @RequestMapping(value = "/getOrder", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<PurchaseOrderHeaderDto> getOrders(){
    String exceptionOccured="NULL_POINTER";
    if(exceptionOccured.equalsIgnoreCase("NULL_POINTER")){
        throw new NullPointerException("Null Pointer Exception");
    }
    return purchaseImpl.GetPurchaseOrder();
}
  

Я не могу обработать созданное исключение, и я использую JAX-RS для его обработки, но оно не работает должным образом, приветствуются любые предложения, которые помогли бы мне разобраться в этом.

Комментарии:

1. вы зарегистрировали своего провайдера?

2. да, я предоставил аннотацию @Provider

3. какую реализацию JAX-RS вы используете?

4. Я новичок в этом су, я не очень разбираюсь в этом

5. Ваш код выглядит хорошо. В идеале мы не должны обрабатывать исключение NullPointerException, исключение NullPointerException означает, что это какая-то ошибка. Вы можете попробовать чистую сборку и повторное развертывание. Если ничего не работает, вы можете попробовать использовать универсальный класс исключений вместо NullPointerException.

Ответ №1:

Вы смешиваете JAX-RS с Spring MVC. Ваш код контроллера — Spring MVC, и ваша попытка обработки исключений с ExceptionMapper помощью JAX-RS. Это две совершенно разные и несовместимые платформы. Для Spring MVC вы хотите использовать @ControllerAdvice класс.