我在基于Spring Boot的Rest服务中定义了一个全局异常处理:
@ControllerAdvice
public class GlobalExceptionController {
private final Logger LOG = LoggerFactory.getLogger(getClass());
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR, reason = "Internal application error")
@ExceptionHandler({ServiceException.class})
@ResponseBody
public ServiceException serviceError(ServiceException e) {
LOG.error("{}: {}", e.getErrorCode(), e.getMessage());
return e;
}
}
public class ServiceException extends RuntimeException {
private static final long serialVersionUID = -6502596312985405760L;
private String errorCode;
public ServiceException(String message, String errorCode, Throwable cause) {
super(message, cause);
this.errorCode = errorCode;
}
// other constructors, getter and setters omitted
}
{
"timestamp": 1413883870237,
"status": 500,
"error": "Internal Server Error",
"exception": "org.example.ServiceException",
"message": "somthing goes wrong",
"path": "/index"
}
那么我如何在我的应用程序中定义一个自定义的异常响应。
Spring Boot使用errorAttributes
的实现来填充呈现为JSON的Map
。默认情况下,使用DefaulTerrorAttributes
的实例。若要包含自定义ErrorCode
,您需要提供一个自定义ErrorAttributes
实现,该实现知道ServiceException
及其错误代码。这个自定义实现在您的配置中应该是一个@bean
。
一种方法是子类DefaulTerrorAttributes
:
@Bean
public ErrorAttributes errorAttributes() {
return new DefaultErrorAttributes() {
@Override
public Map<String, Object> getErrorAttributes(
RequestAttributes requestAttributes,
boolean includeStackTrace) {
Map<String, Object> errorAttributes = super.getErrorAttributes(requestAttributes, includeStackTrace);
Throwable error = getError(requestAttributes);
if (error instanceof ServiceException) {
errorAttributes.put("errorCode", ((ServiceException)error).getErrorCode());
}
return errorAttributes;
}
};
}
我正在使用来自外部API的一些RESTendpoint,为此我正在使用REST模板接口。当我从这些调用中收到某些HTTP状态代码时,我希望能够抛出自定义应用程序异常。为了实现它,我正在实现ResponseErrorHandler接口,如下所示: 最后,这是客户端代码(无关代码省略): 我的应用程序上下文: 我怀疑我没有正确理解此自定义错误处理的行为。每个rest模板方法都可能抛出一个RestCli
我想为REST API做自定义异常处理。 这是我掌握的密码。 如何使自定义错误类捕获并显示自定义错误? 谢谢
我正在学习如何使用apache cxf构建rest服务,并学习了一个教程。但当我运行代码时,我遇到了以下异常 我的cxf.xml文件是这样的 请帮我解决这个问题。
我正在尝试让我自己的身份验证服务与我的nextJS应用程序一起工作。我自己的身份验证服务是一个简单的rest api,在输入正确的凭据时返回JWT访问令牌和JWT刷新令牌。 目前,我正在将JWT刷新令牌设置为httpOnly cookie,并将JWT访问令牌设置为我的nextjs应用程序中的状态变量(内存中)。 我被困在以下几点: > 如何将此访问令牌传递给? 我想将存储在内存中的访问令牌传递给,
本文向大家介绍Springboot之自定义全局异常处理的实现,包括了Springboot之自定义全局异常处理的实现的使用技巧和注意事项,需要的朋友参考一下 前言: 在实际的应用开发中,很多时候往往因为一些不可控的因素导致程序出现一些错误,这个时候就要及时把异常信息反馈给客户端,便于客户端能够及时地进行处理,而针对代码导致的异常,我们一般有两种处理方式,一种是throws直接抛出,一种是使用try.
我们实现了一些新的Rest API作为Keycloak提供程序。提供程序正在工作,但我们找不到检查用户角色的方法。 我们在网上找不到任何例子