public static void populateQueryContext(Throwable t, SiddhiElement siddhiElement,
                                            SiddhiAppContext siddhiAppContext,
                                            SiddhiQueryContext siddhiQueryContext) {
        String siddhiAppString = null;
        if (siddhiQueryContext instanceof SiddhiOnDemandQueryContext &&
                ((SiddhiOnDemandQueryContext) siddhiQueryContext).getOnDemandQueryString() != null) {
            siddhiAppString = ((SiddhiOnDemandQueryContext) siddhiQueryContext).getOnDemandQueryString();
        } else if (siddhiAppContext != null) {
            siddhiAppString = siddhiAppContext.getSiddhiAppString();
        }

        if (siddhiElement != null) {
            if (siddhiAppContext != null) {
                if (t instanceof SiddhiAppContextException) {
                    ((SiddhiAppContextException) t).setQueryContextIndexIfAbsent(
                            siddhiElement.getQueryContextStartIndex(),
                            siddhiElement.getQueryContextEndIndex(), siddhiAppContext.getName(),
                            siddhiAppString);
                } else {
                    throw new SiddhiAppCreationException(t.getMessage(), t, siddhiElement.getQueryContextStartIndex(),
                            siddhiElement.getQueryContextEndIndex(), siddhiAppContext.getName(),
                            siddhiAppString);
                }
            } else {
                if (t instanceof SiddhiAppContextException) {
                    ((SiddhiAppContextException) t).setQueryContextIndexIfAbsent(
                            siddhiElement.getQueryContextStartIndex(),
                            siddhiElement.getQueryContextEndIndex(), null, null);
                } else {
                    throw new SiddhiAppCreationException(t.getMessage(), t, siddhiElement.getQueryContextStartIndex(),
                            siddhiElement.getQueryContextEndIndex(), null, null);
                }
            }
        } else {
            if (siddhiAppContext != null) {
                if (t instanceof SiddhiAppContextException) {
                    ((SiddhiAppContextException) t).setQueryContextIndexIfAbsent(
                            null, null, siddhiAppContext.getName(),
                            siddhiAppString);
                } else {
                    throw new SiddhiAppCreationException(t.getMessage(), t, null, null, siddhiAppContext.getName(),
                            siddhiAppString);
                }
            } else {
                if (!(t instanceof SiddhiAppContextException)) {
                    throw new SiddhiAppCreationException(t.getMessage(), t, null, null, null, null);
                }
            }
        }
    }
Util class to handling Siddhi exceptions
modules/siddhi-core/src/main/java/io/siddhi/core/util/ExceptionUtil.java