是否存在一种方法可以使用 ArchUnit 验证任何方法都不会抛出任何异常?

Does exist a way to verify with ArchUnit that any method doesn´t throw any exception?

我想知道 ArchUnit 中是否存在一种方法来避免方法签名抛出任何已检查的异常。

您可以分别通过 JavaMethod.getThrowsClause() (or JavaConstructor.getThrowsClause() 访问代码单元声明的异常。

以下使用 custom condition 的规则禁止声明任何异常 - 如果您想排除 RuntimeExceptions,您可以轻松地根据需要调整它:

@ArchTest
static ArchRule no_code_units_should_declare_exceptions = noCodeUnits()
    .should(new ArchCondition<JavaCodeUnit>("declare exceptions") {
       @Override
       public void check(JavaCodeUnit codeUnit, ConditionEvents events) {
         int nThrowsDeclarations = codeUnit.getThrowsClause().size();
         String message = String.format("%s has %d throws declarations in %s",
             codeUnit.getDescription(), nThrowsDeclarations, codeUnit.getSourceCodeLocation()
         );
         events.add(new SimpleConditionEvent(codeUnit, nThrowsDeclarations > 0, message));
       }
    });