private Interceptor wrapByExceptionHandleScope(Interceptor interceptor, InterceptorScope scope, ExecutionPolicy policy) {
        final ExceptionHandler exceptionHandler = exceptionHandlerFactory.getExceptionHandler();
        if (interceptor instanceof AroundInterceptor) {
            return new ExceptionHandleScopedInterceptor((AroundInterceptor) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof StaticAroundInterceptor) {
            return new ExceptionHandleScopedStaticAroundInterceptor((StaticAroundInterceptor) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor5) {
            return new ExceptionHandleScopedInterceptor5((AroundInterceptor5) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor4) {
            return new ExceptionHandleScopedInterceptor4((AroundInterceptor4) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor3) {
            return new ExceptionHandleScopedInterceptor3((AroundInterceptor3) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor2) {
            return new ExceptionHandleScopedInterceptor2((AroundInterceptor2) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor1) {
            return new ExceptionHandleScopedInterceptor1((AroundInterceptor1) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor0) {
            return new ExceptionHandleScopedInterceptor0((AroundInterceptor0) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof ApiIdAwareAroundInterceptor) {
            return new ExceptionHandleScopedApiIdAwareAroundInterceptor((ApiIdAwareAroundInterceptor) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor) {
            return new ExceptionHandleScopedBlockInterceptor((BlockAroundInterceptor) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockStaticAroundInterceptor) {
            return new ExceptionHandleScopedBlockStaticAroundInterceptor((BlockStaticAroundInterceptor) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor5) {
            return new ExceptionHandleScopedBlockInterceptor5((BlockAroundInterceptor5) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor4) {
            return new ExceptionHandleScopedBlockInterceptor4((BlockAroundInterceptor4) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor3) {
            return new ExceptionHandleScopedBlockInterceptor3((BlockAroundInterceptor3) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor2) {
            return new ExceptionHandleScopedBlockInterceptor2((BlockAroundInterceptor2) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor1) {
            return new ExceptionHandleScopedBlockInterceptor1((BlockAroundInterceptor1) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor0) {
            return new ExceptionHandleScopedBlockInterceptor0((BlockAroundInterceptor0) interceptor, scope, policy, exceptionHandler);
        } else if (interceptor instanceof BlockApiIdAwareAroundInterceptor) {
            return new ExceptionHandleScopedBlockApiIdAwareAroundInterceptor((BlockApiIdAwareAroundInterceptor) interceptor, scope, policy, exceptionHandler);
        }

        throw new IllegalArgumentException("Unexpected interceptor type: " + interceptor.getClass());
    }
@author Jongho Moon
@author jaehong.kim
agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/interceptor/factory/AnnotatedInterceptorFactory.java