nickf nickf - 1 month ago 14
Javascript Question

Javascript error handling with try .. catch .. finally

I have a suspicion that I'm using the

finally
block incorrectly, and that I don't understand the fundamentals of its purpose...

function myFunc() {
try {
if (true) {
throw "An error";
}
} catch (e) {
alert (e);
return false;
} finally {
return true;
}
}


This function will run the
catch
block, alert "An error", but then return true. Why doesn't it return false?

Answer

The finally block contains statements to execute after the try and catch blocks execute but before the statements following the try...catch statement. The finally block executes whether or not an exception is thrown. If an exception is thrown, the statements in the finally block execute even if no catch block handles the exception. more

The finally block will always run, try returning true after your try block

function myFunc() {
     try {
         if (true) {
               throw "An error";
          }
          return true;
     } catch (e) {
          alert (e);
          return false;
     } finally {
          //do cleanup, etc here
     }
 }