0

我想知道 ArchUnit 中是否存在避免方法签名引发任何已检查异常的方法。

4

1 回答 1

1

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

以下使用自定义条件的规则禁止声明任何异常——如果您想排除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));
       }
    });
于 2021-11-09T20:44:24.807 回答