43 lines
734 B
JavaScript
43 lines
734 B
JavaScript
/***
|
|
* test env state tracking thru try/catch/finally
|
|
* @flow
|
|
*/
|
|
|
|
function foo() {
|
|
var x = 0;
|
|
var y;
|
|
try {
|
|
x = "";
|
|
} catch(e) {
|
|
x = false;
|
|
throw -1;
|
|
} finally {
|
|
y = {};
|
|
}
|
|
// here via [try; finally] only.
|
|
x(); // string ~/> function call (no num or bool error)
|
|
y(); // object ~/> function call (no uninitialized error)
|
|
}
|
|
|
|
function bar(response) {
|
|
var payload;
|
|
try {
|
|
payload = JSON.parse(response);
|
|
} catch (e) {
|
|
throw new Error('...');
|
|
}
|
|
// here via [try] only.
|
|
if (payload.error) { // ok
|
|
// ...
|
|
}
|
|
}
|
|
|
|
function qux() {
|
|
var x = 5;
|
|
try {
|
|
throw -1;
|
|
} finally {
|
|
}
|
|
x(); // unreachable
|
|
}
|