private void handleCatchingThrowing()

in log4j-weaver/src/main/java/org/apache/logging/log4j/weaver/log4j2/LoggerConversionHandler.java [234:253]


    private void handleCatchingThrowing(LocationMethodVisitor mv, String descriptor, boolean throwing) {
        final boolean hasLevel = Type.getArgumentTypes(descriptor).length > 1;
        final int throwableIndex = mv.nextLocal();
        mv.storeLocal(throwableIndex, THROWABLE_TYPE);
        if (hasLevel) {
            mv.invokeInterface(LOGGER_TYPE, AT_LEVEL_METHOD);
        } else {
            mv.invokeInterface(LOGGER_TYPE, AT_ERROR_METHOD);
        }
        mv.storeLocation();
        mv.loadLocal(throwableIndex, THROWABLE_TYPE);
        mv.invokeInterface(LOG_BUILDER_TYPE, WITH_THROWABLE_METHOD);
        mv.getStatic(ABSTRACT_LOGGER_TYPE, throwing ? THROWING_MARKER : CATCHING_MARKER, MARKER_TYPE);
        mv.invokeInterface(LOG_BUILDER_TYPE, WITH_MARKER_METHOD);
        mv.push(throwing ? THROWING : CATCHING);
        mv.invokeInterface(LOG_BUILDER_TYPE, LOG_BUILDER_LOG_STRING_METHOD);
        if (throwing) {
            mv.loadLocal(throwableIndex, THROWABLE_TYPE);
        }
    }