Mastering Error Handling Node.js

Rate this content
Bookmark

Errors happen to every programmer. Devs have different choices: suppress it, notify the user, report to the team, ignore it or write code to handle the error.


In this talk, you will learn all the important aspects of the Node.js error system, the types of errors, different ways to deliver an error, and patterns to improve error handling - with examples!

This talk has been presented at Node Congress 2022, check out the latest edition of this JavaScript Conference.

FAQ

Liz Fardy is the Head Developer Advocate at Fusebit, a company focused on integrations for developers.

Liz Fardy's talk focuses on mastering error handling in Node.js, covering types of errors, error handling techniques, and patterns to improve error handling.

The two broad categories of errors discussed are operational errors and programmer errors.

Common techniques for handling operational errors include retrying the operation, reporting the error up the stack, notifying the client, aborting the program, and doing nothing if the error is not critical.

Using TypeScript helps eliminate a class of programmer errors at compile time by providing strong typing, which can prevent errors related to incorrect data types or syntax issues.

A stack trace is a list of method calls that the application was processing when an exception occurred. It provides valuable debugging information, showing where errors occurred and helping trace the cause of exceptions.

In Node.js, an error is an instance of an error class that might be passed directly to another function or thrown. When an error is thrown, it becomes an exception, which is a condition that disrupts the normal flow of the program.

Node.js supports handling errors through exceptions, callbacks, promise rejections, and event emitters, with the choice depending on the type of error and the style of the API being used.

Lizz Parody
Lizz Parody
21 min
17 Feb, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

This Talk explores error handling in Node.js, including types of errors, handling techniques, and debugging. It discusses the use of exceptions, callbacks, and promises for error handling. The importance of proper error handling and the benefits of using error classes, expressive error messages, and automated testing are emphasized. The speaker also addresses the use of TypeScript and test-driven development for error prevention. Overall, the Talk provides valuable insights and techniques for mastering error handling in Node.js.

1. Introduction to Error Handling in Node.js

Short description:

Today I will be talking about mastering error handling in Node.js. Error handling should always be taken into consideration when coding. We will explore the types of errors, how to handle them, and patterns to improve error handling.

Hi, everyone. I am Liz Fardy, and Head Developer Advocate at a really cool company called Fusebit, focused on integrations for developers. Thanks for attending to my talk. Today I will be talking about mastering error handling in Node.js. This is my Twitter handle, LizFardy23. And if you want to create awesome integrations, check out Fusebit.io Twitter account.

Error handling should be always taken into consideration when coding, because we all want to write code that works. But errors happen in every single application, from small startups to big tech companies. And developers need to decide what to do about those errors. How do we handle it, suppress it, ignore it, maybe notify the users, report to the team, retry? But how many times? Because one does not simply write a code without bugs. And that's a fact.

So, this is the agenda for this talk. First, we're going to see the types of errors, operational errors, and programmer errors, because they're different strategies for the different types of errors. Then, we'll see how to handle those errors. And finally, patterns to improve error handling. So, let's begin.

2. Types of Errors and Handling Techniques

Short description:

A big part of programming is just finding and fixing bugs, so it's important to do it like a pro. Let's first identify the type of errors. We can divide all errors into two broad categories, operational errors and programmer errors. The operational errors are runtime problems experienced by code that is well written. There are five main techniques to handle operational errors. First, retry the operation.

A big part of programming is just finding and fixing bugs, so it's important to do it like a pro. Sometimes, when trying to fix a bug, we create three more. Or even, we break the whole application. So, if we know the best practices of error handling, it's possible to reduce debugging time, improve the code, detect errors faster, and avoid creating more errors when fixing a bug.

Now, let's first identify the type of errors. We can divide all errors into two broad categories, operational errors and programmer errors. The operational errors are runtime problems experienced by code that is well written. So, the code doesn't have any problems, no bugs. These errors are caused by something else, some external circumstances that can disrupt the flow of the program execution.

Some examples are the system itself, for example, when the system runs out of memory, the system configuration, there is no route to a remote host, maybe because the host is offline or if you're trying to connect to the incorrect port, the network, when you experience sockets hang up, remote service, 500 error, which is the famous internal server error. There is something wrong with the server that is not very specific and is not related to your code, the internet or your computer. It's just an error with the server. Fail to connect to the server, maybe because you don't have internet. Fail to resolve hostname when you have a typo in the hostname that you're trying to connect with. Invalid user input. For example, the user needs to enter an e-mail address but the e-mail is invalid. Or any other invalid input provided by the user. Request an app. For example, the server took way too much time to respond and it fails. A database connection is lost, perhaps due to faulty network connection. This is an example of a system that's operating in our memory, socket hung up, database connection lost, invalid input, 500 error or remote service error, and no WiFi, which can cause fail to connect to the server, error.

When you experience these kind of errors, there is not much code we can do to fix it. File not found is an operational error, but that doesn't necessarily mean anything is wrong. These situations do not arise due to mistakes in the application code, but they must be handled correctly. Otherwise, they could just cause more serious problems. There are five main techniques to handle operational errors. First, retry the operation. If you're experiencing a 500 error or fail to connect to server or the server is overload, you can just wait and retry to connect in a few seconds. Network requests to external service might sometimes fail, even if the request is completely valid. Such issues are normally sporadic, so instead of reporting it or notifying, you can retry the request a few times until it succeeds or it reaches the maximum amount of retries.

QnA