public static void reportException(ErrorReporter er, RhinoException ex) {
   if (er instanceof ToolErrorReporter) {
     ((ToolErrorReporter) er).reportException(ex);
   } else {
     String msg = getExceptionMessage(ex);
     er.error(msg, ex.sourceName(), ex.lineNumber(), ex.lineSource(), ex.columnNumber());
   }
 }
 public void error(String message, String sourceURI, int line, String lineText, int lineOffset) {
   if (forEval) {
     // Assume error message strings that start with "TypeError: "
     // should become TypeError exceptions. A bit of a hack, but we
     // don't want to change the ErrorReporter interface.
     String error = "SyntaxError";
     final String TYPE_ERROR_NAME = "TypeError";
     final String DELIMETER = ": ";
     final String prefix = TYPE_ERROR_NAME + DELIMETER;
     if (message.startsWith(prefix)) {
       error = TYPE_ERROR_NAME;
       message = message.substring(prefix.length());
     }
     throw ScriptRuntime.constructError(error, message, sourceURI, line, lineText, lineOffset);
   }
   if (chainedReporter != null) {
     chainedReporter.error(message, sourceURI, line, lineText, lineOffset);
   } else {
     throw runtimeError(message, sourceURI, line, lineText, lineOffset);
   }
 }