我有一个要求,我正在编写重试逻辑,并且我需要根据将在参数中传递的函数来捕获异常
,因此在java
中是否可以确定捕获的异常是否与在参数中传递的异常
匹配?
基本上:
retryfunc(func,Exception... retryableexceptions,int retries){
try {
func.apply();
}catch(...){}//How to validate if exception is of retryable type ?
}
最佳答案
我假设您正在传递“可重试异常”的异常列表,并且您想知道由该方法调用生成的异常是否是其中之一。
如果是这种情况,那么您可以执行以下操作:
retryfunc(func, Exception... retryableExceptionList, int retries){
try {
func.apply();
}catch(Exception e){
for (Exception retryableException : retryableExceptionList) {
if (e.getClass().isAssignableFrom(retryableException.getClass())) {
System.out.println("We need to retry buddy..");
break;
}
}
}
}
关于Java Catch 变量中的 block 异常类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42240474/