Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量中的Java捕获块异常类_Java_Performance - Fatal编程技术网

变量中的Java捕获块异常类

变量中的Java捕获块异常类,java,performance,Java,Performance,我有一个要求,我正在编写一个重试逻辑,我需要捕获异常,这取决于将在参数中传递的函数,因此在java中是否可以确定捕获的异常是否与在参数中传递的异常匹配 基本上: retryfunc(func,Exception... retryableexceptions,int retries){ try { func.apply(); }catch(...){}//How to validate if exception is of retryable type ? }

我有一个要求,我正在编写一个重试逻辑,我需要
捕获异常
,这取决于将在参数中传递的函数,因此在
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;
                }
          }
    }
}

等等,什么?您正在传入一个异常数组,并且希望以某种方式匹配数组中的元素,以查看它是否是需要对其进行额外处理的异常之一,或者是否要重试?这些异常与任何其他系统异常的区别是什么?是否有一个
RetryableException
类继承了这些异常?我想知道,当所有这些都迫使我们逐个关注具体类型的异常时,为什么会出现异常数组?也许你有一个多挡块。我认为如果你提到这个方法是如何从外部调用的,那会更好。你的意思是你要预先创建一些异常对象,调用这个方法,你想让它只捕获已经提供的异常?或已提供的类别?没什么意义。无论如何,在Java中是不可实现的,除非您自己通过
instanceof
来实现它。这根本不是我的想法。你需要重新考虑这一切。试试
Class.isInstance(e)