我想知道 ArchUnit 中是否存在避免方法签名引发任何已检查异常的方法。
问问题
49 次
1 回答
1
JavaMethod.getThrowsClause()
您可以通过(或JavaConstructor.getThrowsClause()
,分别)访问代码单元声明的异常。
以下使用自定义条件的规则禁止声明任何异常——如果您想排除RuntimeException
s,您可以轻松地调整它以适应您的需求:
@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 回答