Javascript Try-Catch and Throw
Catching Errors
A try catch block allows you to gracefully handle errors or exceptions in your
code.
try {
// Do something that might trigger an error
} catch (error) {
// Only runs when there is an error/exception
} finally {
// Code here always runs. Doesn't matter if there was an error or not.
}
Throwing Errors
You can simply just throw a new Error object:
function doSomething() {
// ... stuff
throw new Error('something terrible happened');
}
try {
doSomething();
} catch (e) {
console.log(e); // Logs the error
}
You don’t have to throw an Error though - you could return a simple string,
a number, an object … it can be any valid expression so that gives a lot of
flexibility!
// Throw a string...
throw 'Error';
// Throw a number...
throw 12345;
// Throw an object...
throw {myProperty: 'banana'};
We could if we wanted to even throw a function that could then be called by
the catch block:
function doSomething() {
// ... stuff
throw () => {
// do something complex here, e.g. API call, database update.
}
}
try {
doSomething();
} catch (e) {
e(); // Execute the function that was thrown.
}
Errors vs Exceptions
People often use 'Error' and ‘Exception’ interchangeably - e.g. “throw an
error” or “throw an exception”.
These are basically the same thing, except of course Error is an actual type
in javascript, but there is no such type for an exception. In the ECMAScript
docs, they actually use terms like “Throw a TypeError exception”, i.e. that
the exception is just the thing you throw, be that an error or any other
expression.