141 public final int getColumnNumber() { 142 return column; 143 } 144 145 /** 146 * Returns array javascript stack frames from the given exception object. 147 * 148 * @param exception exception from which stack frames are retrieved and filtered 149 * @return array of javascript stack frames 150 */ 151 public static StackTraceElement[] getScriptFrames(final Throwable exception) { 152 final StackTraceElement[] frames = exception.getStackTrace(); 153 final List<StackTraceElement> filtered = new ArrayList<>(); 154 for (final StackTraceElement st : frames) { 155 if (ECMAErrors.isScriptFrame(st)) { 156 final String className = "<" + st.getFileName() + ">"; 157 String methodName = st.getMethodName(); 158 if (methodName.equals(CompilerConstants.RUN_SCRIPT.symbolName())) { 159 methodName = "<program>"; 160 } 161 filtered.add(new StackTraceElement(className, methodName, 162 st.getFileName(), st.getLineNumber())); 163 } 164 } 165 return filtered.toArray(new StackTraceElement[filtered.size()]); 166 } 167 168 /** 169 * Return a formatted script stack trace string with frames information separated by '\n' 170 * 171 * @param exception exception for which script stack string is returned 172 * @return formatted stack trace string 173 */ 174 public static String getScriptStackString(final Throwable exception) { 175 final StringBuilder buf = new StringBuilder(); 176 final StackTraceElement[] frames = getScriptFrames(exception); 177 for (final StackTraceElement st : frames) { 178 buf.append("\tat "); 179 buf.append(st.getMethodName()); 180 buf.append(" ("); | 141 public final int getColumnNumber() { 142 return column; 143 } 144 145 /** 146 * Returns array javascript stack frames from the given exception object. 147 * 148 * @param exception exception from which stack frames are retrieved and filtered 149 * @return array of javascript stack frames 150 */ 151 public static StackTraceElement[] getScriptFrames(final Throwable exception) { 152 final StackTraceElement[] frames = exception.getStackTrace(); 153 final List<StackTraceElement> filtered = new ArrayList<>(); 154 for (final StackTraceElement st : frames) { 155 if (ECMAErrors.isScriptFrame(st)) { 156 final String className = "<" + st.getFileName() + ">"; 157 String methodName = st.getMethodName(); 158 if (methodName.equals(CompilerConstants.RUN_SCRIPT.symbolName())) { 159 methodName = "<program>"; 160 } 161 162 if (methodName.contains(CompilerConstants.ANON_FUNCTION_PREFIX.symbolName())) { 163 methodName = "<anonymous>"; 164 } 165 166 filtered.add(new StackTraceElement(className, methodName, 167 st.getFileName(), st.getLineNumber())); 168 } 169 } 170 return filtered.toArray(new StackTraceElement[filtered.size()]); 171 } 172 173 /** 174 * Return a formatted script stack trace string with frames information separated by '\n' 175 * 176 * @param exception exception for which script stack string is returned 177 * @return formatted stack trace string 178 */ 179 public static String getScriptStackString(final Throwable exception) { 180 final StringBuilder buf = new StringBuilder(); 181 final StackTraceElement[] frames = getScriptFrames(exception); 182 for (final StackTraceElement st : frames) { 183 buf.append("\tat "); 184 buf.append(st.getMethodName()); 185 buf.append(" ("); |