Sonarqube 将 AOP Throwable 视为一个问题

Sonarqube treat AOP Throwable as an issue

Sonarqube 定义了一条规则,说 永远不应抛出通用异常 (即抛出专用异常而不是使用通用异常。) 但是 AOP ProceedingJoinPoint 总是抛出泛型 Throwable 并且通常我对异常根本不感兴趣,只是从这样的方法中抛出它:

@Around(...)
public void someMethod(ProceedingJoinPoint point) throws Throwable {
    // do something...
    point.proceed();
    // do something else...
}

显然这违反了上述Sonarqube规则。我真的必须用 try catch 包装它并记录可抛出的东西吗?这方面的最佳做法是什么?

的确,您无法避免使用自己抛出 Throwable 或普通 Exception 的库。因此,当您处理此异常时,总是会违反该规则形成 sonarqube。

但是您绝对应该捕获此异常并对其进行处理。您究竟用它做什么取决于捕获它的应用程序层。如果它较低,那么您可能希望将其包装到您自己的适当异常中。考虑到所有其他更高层都不想知道您使用了哪些依赖项。如果您自己是高层,那么您可以记录它或 return 为用户提供适当的消息。希望对您有所帮助。

您可以安全地将此违规标记为误报并输入描述性评论。这种误报应该很少见,足以让您单独对待它们,并采取相应的行动——AoP API 是一个很好的例子,遗留 and/or 写得不好的库是另一个例子。但不要将文件添加到排除项中,因为您会从 Sonar 分析中丢失其他规则