In a recent code review, a more senior colleague asked that I throw an error in an exported function so I wasn’t just writing a console.log
that might not have meaning. The custom error was needed because the value I was checking was an HTTP status considered an error (ex. 404) instead of an error that Node would throw.
I wasn’t aware there was a way to do this in Node.js so I did some research and found that it was really pretty straightforward!
When you write the function that is performing the evaluation, ensure you use the throw
keyword to return a string containing your custom message when your defined error condition is hit so that Node.js recognizes it as an error.
const anything = (item) => {
if (item === "nothing") {
throw "It's not anything"
} else {
return "It's something"
}
}
In the function that is performing the evaluation, add a try...catch
block to handle an error if it is returned.
const checkThingness = (item) => {
try {
console.log(anything(item))
}
catch(err) {
console.log(err)
}
}
When you call the main function, an error will be handled properly by the catch
block.
checkThingness("something")
// > It's something
checkThingness("nothing")
// > It's not anything
Here is the full sample code block.
const anything = (item) => {
if (item === "nothing") {
throw "It's not anything"
} else {
return "It's something"
}
}
const checkThingness = (item) => {
try {
console.log(anything(item))
}
catch(err) {
console.log(err)
}
}
checkThingness("something")
// > It's something
checkThingness("nothing")
// > It's not anything
While this is a very simple example, it makes plain how to start using custom errors via the throw
keyword to handle your code more robustly with a good coding pattern. Further examples are included in the MDN entry for the throw
keyword.