方法注释可以处理此方法引发的错误吗?

时间:2018-12-13 13:21:37

标签: java exception methods annotations

我最近开始学习注释,我想知道方法注释可以处理此方法引发的错误吗?或了解此异常/错误的代码。

P.S。如果可以的话,下一步是根据错误代码重试此方法

P.S.S。我知道spring Retryable,但是我不能使用它。我试图在Google中找到有关我的问题的信息,但没有找到。

3 个答案:

答案 0 :(得分:2)

注释本身不起作用。它只是标记代码。您需要有一些处理程序,可以扫描您的类并在有注释的情况下做出反应。

大多数框架已经具有处理程序和扫描器,因此开发人员包括适当的框架,添加适当的注释,并且由于这些框架将为开发人员或应用程序执行某些工作。

顺便说一句,对于错误处理,我建议使用这样的简单代理: Invoke method in another class's try catch block

答案 1 :(得分:2)

您可能更在考虑Aspect Oriented Programming

含义:Java注释与添加功能“到”方法无关。它们是由某种组件(在编译时是编译器,在运行时是某种框架)“评估”的标记,并触发该组件中的活动。

为了真正地操纵一种方法的行为(例如:添加自动跟踪/记录代码),您需要诸如AOP之类的东西。当然:编译器注释的全部目的是基于注释生成代码。 Project Lombok是这类事情的一个很好的例子:将注释放入源代码中,并且已编译的类文件包含Lombok在编译期间插入的许多东西。

答案 2 :(得分:1)

实际上,OOP中的基本内容之一是IoC(控制反转)。在构建专业应用程序时,我们需要注意这种方法。

https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring

例如, 我们可以在项目的每个类中编写try / catch块。 代替这种方式,我们可以使用@ControllerAdvice注释。 只需定义一个特定的异常,JVM就会为您处理所有类/请求中的异常。这就是IoC。

如果在放置在@ControllerAdvice注释上的Class中定义异常,则可以在项目中的每个请求中捕获异常。

简单用法示例:

@ControllerAdvice
@RestController
public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
    public final ResponseEntity httpRequestMethodNotSupportedException(Exception ex, WebRequest request) {
        ExceptionResponse exceptionResponse = new ExceptionResponse(new Date(), "there isn’t an URL like that",
                request.getDescription(false));
        return new ResponseEntity<>(exceptionResponse, HttpStatus.METHOD_NOT_ALLOWED);

    } 

以下是有关@ControllerAdvice的有用链接:

https://medium.com/@jovannypcg/understanding-springs-controlleradvice-cd96a364033f