为了处理我宁静的Spring后端中的错误,我有一些例外,下面是一个例外示例:
@ResponseStatus(value = HttpStatus.FORBIDDEN)
public class IllegalUserAgentException extends RuntimeException
{
public IllegalUserAgentException(String exception)
{
super(exception);
}
}
当我从服务中抛出此异常(在域驱动的体系结构中)时,Spring返回json错误以下
{
"timestamp": 1552127820802,
"status": 403,
"error": "Forbidden",
"exception": "com.example.exception.IllegalUserAgentException",
"message": "test",
"path": "/path/somePath"
}
如您所见,Spring添加了一个具有“ exception”名称的属性,我想删除该属性。
我添加了server.error.include-exception=false
标志,但不起作用。
有解决办法吗?
答案 0 :(得分:0)
我建议您做一个回应课。 在您的服务类中添加try catch,然后返回此对象。 在catch部分中实例化ResponseDto对象并相应地添加消息。这将正常处理您的异常。它具有可伸缩性,因为您还可以包装其他任何异常消息。
public class ResponseDto {
@JsonProperty("url")
private String url;
@JsonProperty("status")
private int status;
@JsonProperty("userMsg")
private String UserMsg;
}
答案 1 :(得分:0)
在spring-boot中,您可以通过定义扩展DefaultErrorAttributes的@Component来实现,然后重写getErrorAttributes函数以删除“异常”。
@Component
public class CustomErrorAttributes extends DefaultErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(
WebRequest webRequest,
boolean includeStackTrace
) {
Map<String, Object> errorAttributes
= super.getErrorAttributes(webRequest, includeStackTrace);
errorAttributes.remove("exception");
return errorAttributes;
}
}
还有其他选择,例如使用@ControllerAdvice,您可以进一步仔细研究。