Esempio n. 1
0
JSObject *Error::create(ExecState *exec, ErrorType errtype, const UString &message,
                         int lineno, int sourceId, const UString &sourceURL)
{
#ifdef KJS_VERBOSE
  // message could be 0L. Don't enable this on Solaris ;)
  fprintf(stderr, "WARNING: KJS %s: %s\n", errorNamesArr[errtype], message.ascii());
#endif


  Interpreter* interp = exec->lexicalInterpreter();
  JSObject *cons;
  switch (errtype) {
  case EvalError:
    cons = interp->builtinEvalError();
    break;
  case RangeError:
    cons = interp->builtinRangeError();
    break;
  case ReferenceError:
    cons = interp->builtinReferenceError();
    break;
  case SyntaxError:
    cons = interp->builtinSyntaxError();
    break;
  case TypeError:
    cons = interp->builtinTypeError();
    break;
  case URIError:
    cons = interp->builtinURIError();
    break;
  default:
    cons = interp->builtinError();
    break;
  }

  List args;
  if (message.isEmpty())
    args.append(jsString(errorNames[errtype]));
  else
    args.append(jsString(message));
  JSObject *err = static_cast<JSObject *>(cons->construct(exec,args));

  if (lineno != -1)
    err->put(exec, "line", jsNumber(lineno));
  if (sourceId != -1)
    err->put(exec, "sourceId", jsNumber(sourceId));

  if(!sourceURL.isNull())
    err->put(exec, "sourceURL", jsString(sourceURL));

  return err;

/*
#ifndef NDEBUG
  const char *msg = err->get(messagePropertyName)->toString().value().ascii();
  if (l >= 0)
      fprintf(stderr, "KJS: %s at line %d. %s\n", estr, l, msg);
  else
      fprintf(stderr, "KJS: %s. %s\n", estr, msg);
#endif

  return err;
*/
}