gpt4 book ai didi

java - 如何在 React.js 中显示服务器(Java)异常消息

转载 作者:行者123 更新时间:2023-12-03 14:10:24 24 4
gpt4 key购买 nike

我无法看到抛出异常时设置的消息(在 React.js catch block 中)(由 Java 中的服务器)。

情况:用户想要执行某些操作(通过 myService),某些验证操作只能在后端完成,如果失败如何向用户显示失败的原因是什么?

服务(Java):

@GetMapping(path = {/*Servive_path*/}, produces = APPLICATION_JSON_VALUE)
public MyClass myService(@RequestParam String param) {
throw new RuntimeException("This is error message");
}

操作(React.js):

const myServive = (param) => {
return async (dispatch, getState) => {
return request({
url: ENDPOINTS.MY_SERVICE,
method: methods.GET,
params: { param }
})
.then(res => {
dispatch(saveResult(res));
dispatch(
notify({
title: "Successful",
message: "It was successfully.",
status: 200,
dismissAfter: CONFIG.NOTIFICATION_TIMEOUT
})
);
})
.catch(err => {
console.log("err.data: ", err.data); //Output-> err.data:
console.log("err.message: ", err.message); //Output-> err.message: undefined
dispatch(
notify({
title: "Some error occured",
message: **//Want to set the error message**,
status: "error",
dismissAfter: CONFIG.NOTIFICATION_TIMEOUT
})
);
});
};
};

想要通过在 catch 操作 block 中的 Massage 中设置值来显示异常消息。

输出

err.data: ""
err.message: undefined

另外,

err.status: 500
err.request.response: ""
err.request.responseText: ""
err.request.responseType: ""
err.request.status: 500
err.request.statusText: ""

请帮忙。

最佳答案

默认情况下,如果发生异常,Spring会返回http状态500,内容类型为:text/html;charset=UTF-8,并生成带有错误描述的html页面。您的错误描述将​​位于本页最后一行

之后
<div>There was an unexpected error (type=Internal Server Error, status=500).</div>

看起来像

<div>This is error message</div>

当然,您可以在代码中编写拐杖并使用 React 解析此页面,但我不建议这样做。最好加上Controller advice并编写自定义异常处理。在你的情况下是这样的

import lombok.Value;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class ErrorHandler {

@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ExceptionRestResponse handleCustomException(Exception exception) {
return new ExceptionRestResponse(500, exception.getMessage());
}

@Value
public static class ExceptionRestResponse {
int code;
String message;
}
}

然后您将收到 Content-Type: application/json 的响应,如下所示

{
"code": 500,
"message": "This is error message"
}

关于java - 如何在 React.js 中显示服务器(Java)异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61498116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com