When an error occurs while executing a block of code, JavaScript will normally stop and generate an error message. JavaScript will actually create an Error object with two properties: name and message.
The technical term for this is: JavaScript will throw
an exception (throw an error).
You can handle errors in Javascript using try
and catch
block.
The JavaScript statements try
and catch
come in pairs.
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.
Catching is done by wrapping a piece of code in a try
block, followed by the keyword catch
.
try { Block of code to try } catch(ex) { Block of code to handle errors }
When the code in the try
block causes an exception(throws an error), the catch
block is evaluated. The variable name (in parentheses) after catch will be bound to the exception value. After the catch
block finishes or if the try
block finishes without any problems, control proceeds further below the entire try/catch
statement.
The throw
keyword is used to raise an exception. The throw
statement allows you to create a custom error.
You can throw
any exception (throw an error) as you wanted.
The exception can be a JavaScript String, a Number, a Boolean or an Object.
throw "Too big"; // throw a text throw 500; // throw a number
If you use throw
together with try
and catch
, you can control program flow and generate custom error messages.
This example examines input. If the value is wrong, an exception (ex) is thrown.
The exception (ex) is caught by the catch statement and a custom error message is displayed:
<!DOCTYPE html> <html> <body> <p>Please input a number between 5 and 10:</p> <input id="demo" type="text"> <button type="button" onclick="myFunction()">Test Input</button> <p id="message"></p>
<script> function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "empty"; if(isNaN(x)) throw "not a number"; x = Number(x); if(x < 5) throw "too low"; if(x > 10) throw "too high"; } catch(ex) { message.innerHTML = "Input is " + ex; } } </script>