finally() in javascript

·

2 min read

finally is a key method used within the try-catch structure in JavaScript. This method is triggered regardless of whether the preceding promise is fulfilled or rejected. Its primary function is to handle final tasks after promise resolution, which might include communicating to the user that their request has been processed. The processing is done regardless of whether the request was successful or unsuccessful.

Here's a basic rundown:

  • The try block contains the code that might throw an exception.

  • The catch block contains the code to handle the exception, if one occurs in the try block.

  • The finally block contains code that will execute after the try and catch blocks, regardless of whether an exception was thrown or caught.

The primary purpose of the finally block is to include any cleanup code that must be executed irrespective of whether an error occurs. For example, if you open a file in the try block, you would close it in the finally block to ensure the file gets closed, whether an error occurs or not.

Here's an example:

try {
    // Code that may throw an exception
    throw new Error('This is an error');
} catch (error) {
    // Code to handle the exception
    console.error('An error occurred: ', error);
} finally {
    // Code that gets executed regardless of an exception
    console.log('This will always run, error or not.');
}

In this example, an error is thrown inside the try block. The catch block catches the error and logs it. Regardless of the outcome (whether an error was thrown or not), the finally block runs and logs 'This will always run, error or not.' to the console.

It's important to note that finally can be used without a catch block. This is particularly useful when you want to run cleanup code, but you don't want to handle the error at that specific part of your code. The error will then propagate up the call stack to the next parent try-catch, or cause the program to terminate if no other try-catch is found.

Thank you for reading. I encourage you to follow me on Twitter where I regularly share content about JavaScript and React, as well as contribute to open-source projects. I am currently seeking a remote job or internship.

Twitter: https://twitter.com/Diwakar_766

GitHub: https://github.com/DIWAKARKASHYAP

Portfolio: https://diwakar-portfolio.vercel.app/