no-catch-shadow
Disallow catch
clause parameters from shadowing variables in the outer scope
This rule was deprecated in ESLint v5.1.0. It will be removed in v11.0.0. Please replace the rule with no-shadow.
In IE 8 and earlier, the catch clause parameter can overwrite the value of a variable in the outer scope, if that variable has the same name as the catch clause parameter.
var err = "x";
try {
throw "problem";
} catch (err) {
}
console.log(err) // err is 'problem', not 'x'
Rule Details
This rule is aimed at preventing unexpected behavior in your program that may arise from a bug in IE 8 and earlier, in which the catch clause parameter can leak into outer scopes. This rule will warn whenever it encounters a catch clause parameter that has the same name as a variable in an outer scope.
Examples of incorrect code for this rule:
/*eslint no-catch-shadow: "error"*/
var err = "x";
try {
throw "problem";
}
function error() {
// ...
};
try {
throw "problem";
}
Examples of correct code for this rule:
/*eslint no-catch-shadow: "error"*/
var err = "x";
try {
throw "problem";
} catch (e) {
}
function error() {
// ...
};
try {
throw "problem";
} catch (e) {
}
When Not To Use It
If you do not need to support IE 8 and earlier, you should turn this rule off.
Version
This rule was introduced in ESLint v0.0.9.