Java 从Spring中捕获异常时遇到问题

Java 从Spring中捕获异常时遇到问题,java,reactjs,spring,spring-boot,exception,Java,Reactjs,Spring,Spring Boot,Exception,我正在制作一个国际象棋游戏,它是我在春天制作的,然后连接到React。我在Spring中有一些自定义异常,它们在后端可以完美地工作,但我不知道如何在前端捕获自定义消息 我可以使用邮递员与程序进行移动,如果这是非法移动,我将收到此消息- 状态代码:417期望失败消息:对于uri=/game的棋子,这不是合法的移动;客户端=127.0.0.1 然而,在React中,我得到的唯一消息(除了来自xhr.js:178的消息)是- 请求失败,状态代码为417 我试图遵循这里和这里的建议,因为我的响应不是JS

我正在制作一个国际象棋游戏,它是我在春天制作的,然后连接到React。我在Spring中有一些自定义异常,它们在后端可以完美地工作,但我不知道如何在前端捕获自定义消息

我可以使用邮递员与程序进行移动,如果这是非法移动,我将收到此消息-

状态代码:417期望失败消息:对于uri=/game的棋子,这不是合法的移动;客户端=127.0.0.1

然而,在React中,我得到的唯一消息(除了来自xhr.js:178的消息)是-

请求失败,状态代码为417

我试图遵循这里和这里的建议,因为我的响应不是JSON格式(尽管我认为@ResponseBody应该将其转换为JSON),但在尝试遵循公认的答案之后,它只导致了一个没有解决的错误,React说它失败了,状态代码为500,所以我显然遗漏了一些东西

这是我最初的CustomerExceptionsHandler-

package com.chess.exceptions;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

@ControllerAdvice
public class CustomExceptionsHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = InvalidMoveException.class)
    @ResponseBody
    protected ResponseEntity<Object> resolveInvalidMove(InvalidMoveException e, WebRequest req){   
        ErrorResponse errorResponse = new ErrorResponse(HttpStatus.EXPECTATION_FAILED.value(),
                HttpStatus.EXPECTATION_FAILED.getReasonPhrase(),
                e.getMessage(),
                req.getDescription(true));
        return handleExceptionInternal(e, errorResponse.toString(), new HttpHeaders(), HttpStatus.EXPECTATION_FAILED, req);       
    }
ErrorResponse.java

package com.chess.exceptions;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "error")
public class ErrorResponse {
    private int status;
    private String errReason;
    private String errMessage;
    private String path;

    public ErrorResponse(int status, String errReason, String errMessage, String path) {
        this.status = status;
        this.errReason = errReason;
        this.errMessage = errMessage;
        this.path = path;
    }
   //2nd constructor added for ATTEMPT 1
    public ErrorResponse(int status, String errMessage){
        this.status = status;
        this.errMessage = errMessage;
    }

    @Override
    public String toString(){
        return "Status Code: "  + status + " " + errReason + " Message: " + errMessage + " at " + path;
    }
}
下面是React的相关代码- Board.js

DataService.js

makeMove(move){
        return axios.post(`${url}`, move);
    }
任何帮助都将不胜感激

 DataService.makeMove(move)
            .then(res => {
                //console.log(res.data);
                setIsWhite((prev) => !prev);                
                props.setTheBoard(res.data);
                setStatus(res.data[64]);
                updateMovesList();
            })
            .catch(err => {
                console.log(err)                
                console.log(err.message)                
            })
makeMove(move){
        return axios.post(`${url}`, move);
    }