是否存在一种方法可以使用 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 的规则禁止声明任何异常 - 如果您想排除 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));
}
});
我想知道 ArchUnit 中是否存在一种方法来避免方法签名抛出任何已检查的异常。
您可以分别通过 JavaMethod.getThrowsClause()
(or JavaConstructor.getThrowsClause()
访问代码单元声明的异常。
以下使用 custom condition 的规则禁止声明任何异常 - 如果您想排除 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));
}
});