Non-standard: This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

The InternalError object indicates an error that occurred internally in the JavaScript engine.

Example cases are mostly when something is too large, e.g.:

  • "too many switch cases",
  • "too many parentheses in regular expression",
  • "array initializer too large",
  • "too much recursion".


InternalError() Non-standard

Creates a new InternalError object.

Instance properties


Error message. Inherited from Error.

Error name. Inherited from Error.


Error cause. Inherited from Error.

InternalError.prototype.fileName Non-standard

Path to file that raised this error. Inherited from Error.

InternalError.prototype.lineNumber Non-standard

Line number in file that raised this error. Inherited from Error.

InternalError.prototype.columnNumber Non-standard

Column number in line that raised this error. Inherited from Error.

InternalError.prototype.stack Non-standard

Stack trace. Inherited from Error.


Too much recursion

This recursive function runs 10 times, as per the exit condition.

function loop(x) {
  // "x >= 10" is the exit condition
  if (x >= 10) return;

  // do stuff
  loop(x + 1); // the recursive call

Setting this condition to an extremely high value, may not work:

function loop(x) {
  if (x >= 1000000000000) return;

  // do stuff
  loop(x + 1);

// InternalError: too much recursion

For more information, see InternalError: too much recursion.


Not part of any standard.

Browser compatibility

BCD tables only load in the browser

See also