简体   繁体   English

Spring-boot:未达到 RestControllerAdvise

[英]Spring-boot: RestControllerAdvise not reached

I've built a RestControlerAdvise :我建立了一个RestControlerAdvise

@RestControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
public class ExceptionControllerAdvice {

    @ExceptionHandler({DocumentAlreadyExistsException.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public cat.gencat.ctti.canigo.arch.web.rs.model.Error handleException(DocumentAlreadyExistsException e) {

        cat.gencat.ctti.canigo.arch.web.rs.model.Error error = new cat.gencat.ctti.canigo.arch.web.rs.model.Error();
        error.setCode(HttpStatus.BAD_REQUEST.value());
        error.setMessage(e.getMessage());
        return error;

    }

}

Nevertheless, it's never reached even though I raise an DocumentAlreadyExistException .尽管如此,即使我提出DocumentAlreadyExistException也从未达到。

It's detected on boot:它在启动时检测到:

2018-08-20 17:08:25.791 INFO 4941 --- [ main].mmaExceptionHandlerExceptionResolver: Detected @ExceptionHandler methods in exceptionControllerAdvice 2018-08-20 17:08:25.791 INFO 4941 --- [main].mmaExceptionHandlerExceptionResolver:在 exceptionControllerAdvice 中检测到 @ExceptionHandler 方法

Any ideas?有任何想法吗?

I ran the same code in my application and its working fine, also please note 我在应用程序中运行了相同的代码,并且运行正常,也请注意

@ExceptionHandler methods on the Controller are always selected before those on any @ControllerAdvice instance. 始终在任何@ControllerAdvice实例上选择@Controller上的@ExceptionHandler方法。 It is undefined what order controller-advices are processed. 尚不确定处理哪种顺序的控制器建议。

@RestControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CustomExceptionHandler  {

    @ExceptionHandler(value={Exception.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public final ErrorMessage exceptionHandler(Exception e)
    {
        ErrorMessage msg=new ErrorMessage();
        msg.setError("its an error");

        return msg;
    }

also please refer the following link for more information : https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc 也请参考以下链接以获取更多信息: https : //spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

您可能正在处理DocumentAlreadyExistException,而不是将其扔给spring处理。

Make sure that the Exception handler class is in the same package or inside the package where the controller exists.确保异常处理程序 class 在同一个 package 中,或者在 controller 所在的 package 内部。

For example: If the package where the controller is found is:例如:如果找到controller的package是:

package com.test.component.controller;

Then use the same package for the handler or use this:然后为处理程序使用相同的 package 或使用此:

package com.test.component.controller.exceptionhandler;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM