江明涛的博客
如何把自定义异常类转换为JSON格式
如何把自定义异常类转换为JSON格式

如何把自定义异常类转换为JSON格式

如何把自定义异常类转换为JSON格式

当我们在开发中使用自定义异常类时,有时候我们需要将异常信息以JSON格式返回给客户端。这种情况下,我们可以通过一些简单的步骤来实现这个功能。下面我将详细介绍如何把自定义异常类转换为JSON格式。

步骤一:创建自定义异常类

首先,我们需要创建一个自定义异常类。这个异常类应该继承自Exception或者RuntimeException。在自定义异常类中,我们可以定义一些属性来存储异常信息,例如错误码、错误信息等。

public class MyCustomException extends RuntimeException {
    private String errorCode;
    private String errorMessage;
    public MyCustomException(String errorCode, String errorMessage) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }
    public String getErrorCode() {
       return errorCode;
    }
    public String getErrorMessage() {
       return errorMessage;
    }
}

步骤二:创建异常处理器

接下来,我们需要创建一个异常处理器类来将异常转换为JSON格式的响应。这个类应该实现ErrorController接口,并且使用@RestControllerAdvice注解进行标记。

@RestControllerAdvice
public class CustomExceptionHandler implements ErrorController {
    @ExceptionHandler(MyCustomException.class)
    public ResponseEntity<ErrorResponse> handleCustomException(MyCustomException ex) {
        ErrorResponse errorResponse = new ErrorResponse(ex.getErrorCode(), ex.getErrorMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
    @Override
    public String getErrorPath() {
        return null;
    }
}

在这个异常处理器类中,我们使用@ExceptionHandler注解来指定要捕获的异常类。然后,我们创建一个ErrorResponse对象,并将异常信息设置到该对象中。最后,我们使用ResponseEntity来包装ErrorResponse对象,并设置响应的HTTP状态码。

步骤三:创建响应实体类

我们需要创建一个响应实体类ErrorResponse,用于封装异常信息。这个类应该包含错误码和错误信息两个属性。

public class ErrorResponse {
    private String errorCode;
    private String errorMessage;
    public ErrorResponse(String errorCode, String errorMessage) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }
    public String getErrorCode() {
       return errorCode;
    }
    public String getErrorMessage() {
       return errorMessage;
    }
}

步骤四:测试异常转换

现在我们可以测试一下异常转换是否正常工作。在我们的控制器中,抛出一个自定义异常,并通过测试请求来触发异常处理器的调用。

@RestController
public class MyController {
    @GetMapping("/test")
    public void testException() {
        throw new MyCustomException("E001", "自定义异常测试");
    }
}

现在,当我们向/test发送请求时,会返回一个JSON格式的响应,包含自定义异常的错误码和错误信息。

{
    "errorCode": "E001",
    "errorMessage": "自定义异常测试"
}

这就是如何把自定义异常类转换为JSON格式的方法。通过这种方式,我们可以将异常信息以更加友好和标准的格式返回给客户端,提高了系统的可维护性和易用性。