DEV Community

Dimitar Nestorov
Dimitar Nestorov

Posted on

Could you not finally?

Do you know of any way to skip the execution of a finally block?

function fn(){
    try{
        return 1;
    }finally{
        console.log(2);
    }
}
fn();
// Logs 2
// Returns 1
Enter fullscreen mode Exit fullscreen mode

A bit more bizarre example would be if you use return in finally:

function fn(){
    try{
        return 1;
    }finally{
        return 2;
    }
}
fn(); // 2
Enter fullscreen mode Exit fullscreen mode

It seems like finally cannot be stopped!

Top comments (2)

Collapse
 
nektro profile image
Meghan (she/her)

The point of finally is to run after a try...catch block no matter what happens. From the MDN

Note that the finally clause executes regardless of whether or not an exception is thrown. Also, if an exception is thrown, the statements in the finally clause execute even if no catch clause handles the exception. You can use the finally clause to make your script fail gracefully when an exception occurs; for example, to do general cleanup, you may need to release a resource that your script has tied up.

Collapse
 
val_baca profile image
Valentin Baca

Short of killing the process, calling another function within try{..}, or doing a while(true) within try{...}, the finally block will execute, period.