Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SWIFT SASS VUE GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING INTRO TO HTML & CSS BASH RUST TOOLS

Basic JavaScript

JS Tutorial JS Introduction JS Where To JS Output

JS Syntax

JS Syntax JS Statements JS Comments JS Variables JS Let JS Const JS Types

JS Operators

JS Operators JS Arithmetic JS Assignment JS Comparisons JS Conditional JS If JS If Else JS Ternary JS Switch JS Booleans JS Logical

JS Loops

JS Loops JS Loop for JS Loop while JS Break JS Continue JS Control Flow

JS Strings

JS Strings JS String Templates JS String Methods JS String Search JS String Reference

JS Numbers

JS Numbers JS Number Methods JS Number Properties JS Number Reference JS Bitwise JS BigInt

JS Functions

Function Path Function Intro Function Invocation Function Parameters Function Returns Function Arguments Function Expressions Function Arrow Function Quiz

JS Objects

Object Path Object Intro Object Properties Object Methods Object this Object Display Object Constructors

JS Scope

JS Scope JS Code Blocks JS Hoisting JS Strict Mode

JS Dates

JS Dates JS Date Formats JS Date Get JS Date Set JS Date Methods

JS Arrays

JS Arrays JS Array Methods JS Array Search JS Array Sort JS Array Iterations JS Array Reference JS Array Const

JS Sets

JS Sets JS Set Methods JS Set Logic JS Set WeakSet JS Set Reference

JS Maps

JS Maps JS Map Methods JS Map WeakMap JS Map Reference

JS Iterations

JS Loops JS Iterables JS Iterators JS Generators

JS Math

JS Math JS Math Reference JS Math Random

JS RexExp

JS RegExp JS RegExp Flags JS RegExp Classes JS RegExp Metachars JS RegExp Assertions JS RegExp Quantifiers JS RegExp Patterns JS RegExp Objects JS RegExp Methods

JS Data Types

JS Destructuring JS Data Types JS Primitive Data JS Object Types JS typeof JS toString JS Type Conversion

JS Errors

JS Errors Intro JS Errors Silent JS Error Statements JS Error Object

JS Debugging

Debugging Intro Debugging Console Debugging Breakpoints Debugging Errors Debugging Async Debugging Reference

JS Conventions

JS Style Guide JS Best Practices JS Mistakes JS Performance

JS References

JS Statements JS Reserved Keywords JS Operators JS Precedence

JS Versions

JS 2026 JS 2025 JS 2024 JS 2023 JS 2022 JS 2021 JS 2020 JS 2019 JS 2018 JS 2017 JS 2016 JS Versions JS 2015 (ES6) JS 2009 (ES5) JS 1999 (ES3) JS IE / Edge JS History

JS HTML

JS HTML DOM JS Events JS Projects New

JS Advanced

JS Temporal  New JS Functions JS Objects JS Classes JS Asynchronous JS Modules JS Meta & Proxy JS Typed Arrays JS DOM Navigation JS Windows JS Web APIs JS AJAX JS JSON JS jQuery JS Graphics JS Examples JS Reference


JavaScript Errors

Errors Will Happen!

When executing JavaScript code, different errors can occur.

Errors can be coding errors made by the programmer, errors due to wrong input, and other unforeseeable things:

  • Reference Errors
  • Type Errors
  • Range Errors
  • URI Errors
  • Syntax Errors
  • Eval Error (deprecated)
  • Silent Errors (next chapter)

How to Handle JavaScript Errors

The try statement allows you to define a block of code to be tested for errors while it is being executed.

The catch statement allows you to define a block of code to be executed, if an error occurs in the try block.

The JavaScript statements try and catch come in pairs:

try {
  Block of code to try
} catch(err) {
  Block of code to handle errors
}

Reference Errors

A ReferenceError occurs if you use (reference) a variable that does not exist.

Error TypeExampleError
ReferenceErrorfname = foo; foo is not defined
ReferenceErrorlet x = y;
let y = 5;
Cannot access y before initialization

Examples

You cannot use a non-existing variable:

let x = 5;

try {
  x = y + 1;
} catch(err) {
  let text = err.name;
}
Try it Yourself »

Cannot access a variable before initialization:

try {
  let x = y;
  let y = 5;
} catch(err) {
  let text = err.name;
}
Try it Yourself »

JavaScript Type Errors

A Type Error occurs when a value is of the wrong type or an operation is invalid on that type.

ErrorExampleError Message
TypeErroranna(5);anna is not a function
Type Errorlet num = 1;
num.toUpperCase();
num.toUpperCase is not a function

Examples

anna() is not a function:

let anna = 5;
try {
  anna(5);
} catch(err) {
  let text = err.name;
}
Try it Yourself »

You cannot convert a number to upper case:

let num = 1;
try {
  num.toUpperCase();
} catch(err) {
  let text = err.name;
}
Try it Yourself »


JavaScript Range Errors

A RangeError occurs when a value is out of its valid range.

Error TypeExampleError Message
RangeErrornew Array(-1);Invalid array length
RangeErrornum.toPrecision(500);toPrecision() argument must be between 1 and 100

Examples

You cannot set the number of array elements to -1:

try {
new Array(-1);
} catch(err) {
  let text = err.name;
}
Try it Yourself »

You cannot set the number of significant digits of a number to 500:

let num = 1;

try {
  num.toPrecision(500);   // A number cannot have 500 significant digits
} catch(err) {
  let text = err.name;
}
Try it Yourself »

JavaScript URI Errors

(Uniform Resource Identifier Errors)

An URIError occurs if you use illegal characters in a URI function:

Error TypeExampleError Message
URIErrordecodeURI("%%%");URI malformed

Example

try {
  decodeURI("%%%");   // You cannot URI decode percent signs
} catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}
Try it Yourself »

JavaScript Syntax Errors

A Syntax Error occurs when the code violates JavaScript's grammar rules.

ErrorExampleError
SyntaxErrorfname = "John);Invalid or unexpected token )
SyntaxErrorMath.round(4.6;Missing ) after argument list

Example

In this example we have made the mistake of not closing the string:

// This line cannot be parsed by JavaScript
let fName = "John);

// Execution stops here
Try it Yourself »

The statement above will generate the error: Invalid or unexpected token

Execution of the program will stop!

Syntax Errors are Not Catchable

  • Syntax errors are not catchable by try...catch
  • Syntax errors happen before runtime

Example

The code below should produce an error, but it does not:

try {
  let x = Math.round(4.6;)
} catch(err) {
  let text = err.name + " " + err.description;
}
Try it Yourself »

Syntax Issue

Math.round(4.6;)

The line above is syntactically invalid JavaScript. There is an extra semicolon inside the parentheses. The correct syntax should be:

Math.round(4.6);

Why

The point is how the browser handles syntax errors:

The JavaScript engine throws a SyntaxError before running the script.

Syntax errors are caught before the try...catch block executes.

This means the try block never starts. The script just fails to run (no let text = update).

Note

The browser console (F12 → Console tab) would show something like:

Uncaught SyntaxError: missing ) after argument list.


JavaScript Eval Error

An EvalError indicates an error in the eval() function.

Newer versions of JavaScript do not throw EvalError.

Use SyntaxError instead.




×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookies and privacy policy.

Copyright 1999-2026 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.

-->