Source code

Revision control

Copy as Markdown

Other Tools

let catchCount = 0;
let target = 3;
function throwOn(x) {
with ({}) {}
if (x == target) {
throw 3;
}
}
// Test try-catch-finally
function foo() {
var x = 0;
try {
throwOn(0);
x = 1;
throwOn(1);
x = 2;
throwOn(2);
x = 3;
} catch {
catchCount++;
} finally {
assertEq(x, target);
}
}
with ({}) {}
for (var i = 0; i < 1000; i++) {
try {
foo();
} catch {}
}
for (var i = 0; i < 4; i++) {
target = i;
try {
foo();
} catch {}
}
assertEq(catchCount, 3);