Espruino/tests/test_try_finally.js

63 lines
1.1 KiB
JavaScript

// https://github.com/espruino/Espruino/issues/2338#issuecomment-1453477606
var success = [];
// Not reaching finally block
(() => {
try {
console.log("testing return...");
return;
} finally {
console.log("return success");
success.push("return");
}
})();
(() => {
do {
try {
console.log("testing break...");
break;
} finally {
console.log("break success");
success.push("break");
}
} while (false);
})();
(() => {
do {
try {
console.log("testing continue...");
continue;
} finally {
console.log("continue success");
success.push("continue");
}
} while (false);
})();
// we shouldn't execute finally in these cases!
(() => {
return;
try {
print("uh-oh!");
} finally {
console.log("return fail");
success.push("return-FAIL");
}
})();
try {
(() => {
throw new Error("Boom!");
try {
print("uh-oh!");
} finally {
console.log("return fail");
success.push("return-FAIL");
}
})();
} catch (e) {}
result = success=="return,break,continue";