创建和使用 类 List<Class<?>> 的列表

Creating and use a List of Classes List<Class<?>>

在 JUnit5s 中使用 TestExecutionExceptionHandler 提供的 handleTestExecutionException 方法,每当测试抛出代码未捕获的异常时调用该方法。

我正在尝试检测我们的某个硬件设备是否发生崩溃。 这些崩溃可以通过多种方式检测到,因为我们有多种方式与我们的不同系统(Rest、Telnet、SSH、WebSocket、SOAP 等)通信,这些系统都会抛出它们自己类型的错误。 因此,与其使用庞大的 if 语句来检查每个可抛出的对象,不如使用 RestException、TelnetException 实例……, 我希望列出 类 并循环遍历该列表以查看抛出的错误是否在该列表中。

这似乎比巨大的 if 语句更易于维护且更易于阅读。

@Override
public void handleTestExecutionException(ExtensionContext extensionContext, Throwable throwable) throws Throwable { 

List<Class<? extends Throwable>> crashErrors = Arrays.asList(NotFoundException.class, BadGatewayException.class, SocketTimeoutException.class, ConnectException.class, ...);

for(Class<? extends Throwable> error : crashErrors){
            if(throwable instanceof error) {
                //process the crash
                break;
            }
        }

}

希望遍历列表以确定系统是否崩溃。

有没有办法做到这一点,或者使用 if 语句和 20 or 语句会更好吗?

看看Class的方法。在那里你可以找到 isInstance ;)