1

我尝试使用 @ControllerAdvice 注释拦截自定义异常。

这是代码:

@ControllerAdvice(basePackages = "{com.ciro.cotroller}")
@RestController
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(value = {TodoNotFoundException.class})
    public final ResponseEntity<ExceptionResponse> todoNotFoundException(TodoNotFoundException exception){
        ExceptionResponse exceptionResponse = new ExceptionResponse(exception.getMessage(), "custom details");
        return new ResponseEntity<ExceptionResponse>(exceptionResponse,HttpStatus.NOT_FOUND);
    }
}

这是我的例外:

package com.ciro.exception;

public class TodoNotFoundException extends RuntimeException {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public TodoNotFoundException() {
        throw new RuntimeException("An custom error is raised!");
    }
}

但是会返回默认实体响应。

4

1 回答 1

1

我以这种方式更改了代码,一切正常。

public TodoNotFoundException() {
    super();
}

第一个错误出现在异常的构造函数中。我需要调用超级方法而不是抛出运行时异常。

@ControllerAdvice("com.ciro.cotroller")

第二个是基础包。

于 2020-03-02T10:02:46.003 回答