gpt4 book ai didi

java - 为什么此JAVA端点不向客户端返回详细的错误消息?

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

我有一个使用Java的服务器。如果我故意在sql查询中拼错了一个单词,使其无效,则此函数将引发适当的错误。为什么这没有将详细的错误消息传递回客户端?而是,错误消息的范围仅包括

"Request failed with status code 500"


这是实际的详细错误:

ERROR: relation "contacs" does not exist


这是端点...
@POST
@Path("{from_list_id}/{to_list_id}")
public Message merge(@PathParam("from_list_id") int from_list_id, @PathParam("to_list_id") int to_list_id) {
String sql = "select * from lists where list_id=?";

sql = "insert into contacts (data, imported, list_id) select data, imported," + to_list_id
+ " from contacs where list_id = " + from_list_id;
int rowsAffected = db.sql(sql).execute().getRowsAffected();
return Message.success(
"Successfully merged " + rowsAffected + " contacts");
}
我看到dropwizard捕获了我的日志文件中的确切错误,但是此错误没有发送到客户端。我们的客户是使用axios的Vuejs组件。
这是客户端axios call
 this.$axios
.post("/merge/" + this.from_list_id + "/" + this.to_list_id, {
timeout: 0
})
.then(
response => {
this.list = response;
util.showSuccess(response.data.message);
},
error => {
console.log(JSON.stringify(error));
util.showError(error);
}
);

最佳答案

您可以通过使用类似于全局异常处理程序的ControllerAdvice来执行所需的操作,以便您可以处理任何一种Exception并返回所需的内容
显示如何处理所有异常的示例:

@ControllerAdvice
public class ExceptionAdviceController {

@ExceptionHandler(BusinessException.class)
public ResponseEntity<Map<String, Object>> handleBusinessException(HttpServletRequest req, Exception exception) {
//you can return what you want here getCause(), getMessage() etc
return new ResponseEntity<>(exception, 500);
}
}
尽管您可以返回所有异常的详细信息,但是您不应这样做,因为这被认为是不好的做法。您应该处理特定的类型并返回信息性消息和正确的http代码

关于java - 为什么此JAVA端点不向客户端返回详细的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63165404/

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