private Interceptor wrapByExceptionHandle(Interceptor interceptor) {
        final ExceptionHandler exceptionHandler = exceptionHandlerFactory.getExceptionHandler();
        if (interceptor instanceof AroundInterceptor) {
            return new ExceptionHandleAroundInterceptor((AroundInterceptor) interceptor, exceptionHandler);
        } else if (interceptor instanceof StaticAroundInterceptor) {
            return new ExceptionHandleStaticAroundInterceptor((StaticAroundInterceptor) interceptor, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor5) {
            return new ExceptionHandleAroundInterceptor5((AroundInterceptor5) interceptor, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor4) {
            return new ExceptionHandleAroundInterceptor4((AroundInterceptor4) interceptor, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor3) {
            return new ExceptionHandleAroundInterceptor3((AroundInterceptor3) interceptor, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor2) {
            return new ExceptionHandleAroundInterceptor2((AroundInterceptor2) interceptor, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor1) {
            return new ExceptionHandleAroundInterceptor1((AroundInterceptor1) interceptor, exceptionHandler);
        } else if (interceptor instanceof AroundInterceptor0) {
            return new ExceptionHandleAroundInterceptor0((AroundInterceptor0) interceptor, exceptionHandler);
        } else if (interceptor instanceof ApiIdAwareAroundInterceptor) {
            return new ExceptionHandleApiIdAwareAroundInterceptor((ApiIdAwareAroundInterceptor) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor) {
            return new ExceptionHandleBlockAroundInterceptor((BlockAroundInterceptor) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockStaticAroundInterceptor) {
            return new ExceptionHandleBlockStaticAroundInterceptor((BlockStaticAroundInterceptor) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor5) {
            return new ExceptionHandleBlockAroundInterceptor5((BlockAroundInterceptor5) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor4) {
            return new ExceptionHandleBlockAroundInterceptor4((BlockAroundInterceptor4) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor3) {
            return new ExceptionHandleBlockAroundInterceptor3((BlockAroundInterceptor3) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor2) {
            return new ExceptionHandleBlockAroundInterceptor2((BlockAroundInterceptor2) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor1) {
            return new ExceptionHandleBlockAroundInterceptor1((BlockAroundInterceptor1) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockAroundInterceptor0) {
            return new ExceptionHandleBlockAroundInterceptor0((BlockAroundInterceptor0) interceptor, exceptionHandler);
        } else if (interceptor instanceof BlockApiIdAwareAroundInterceptor) {
            return new ExceptionHandleBlockApiIdAwareAroundInterceptor((BlockApiIdAwareAroundInterceptor) interceptor, 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