tools: enable no-throw-literal ESLint rule

Only throw the Error object itself or an object using the Error object
as base objects for user-defined exceptions.

PR-URL: https://github.com/nodejs/node/pull/11168
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Teddy Katz <teddy.katz@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
This commit is contained in:
Rich Trott 2017-02-04 11:26:44 -08:00
parent 78ba4943c5
commit 4334658635
12 changed files with 13 additions and 6 deletions

View File

@ -40,6 +40,7 @@ rules:
no-octal: 2
no-redeclare: 2
no-self-assign: 2
no-throw-literal: 2
no-unused-labels: 2
no-useless-call: 2
no-useless-escape: 2

View File

@ -2,4 +2,5 @@
require('../common');
// custom error throwing
// eslint-disable-next-line no-throw-literal
throw ({ name: 'MyCustomError', message: 'This is a custom message' });

View File

@ -1,4 +1,4 @@
*test*message*throw_custom_error.js:5
*test*message*throw_custom_error.js:6
throw ({ name: 'MyCustomError', message: 'This is a custom message' });
^
MyCustomError: This is a custom message

View File

@ -6,6 +6,7 @@ console.error('before');
(function() {
// these lines should contain tab!
// eslint-disable-next-line no-throw-literal
throw ({ foo: 'bar' });
})();

View File

@ -1,5 +1,5 @@
before
*test*message*throw_in_line_with_tabs.js:9
*test*message*throw_in_line_with_tabs.js:10
throw ({ foo: 'bar' });
^
[object Object]

View File

@ -2,4 +2,5 @@
require('../common');
// custom error throwing
// eslint-disable-next-line no-throw-literal
throw ({ foo: 'bar' });

View File

@ -1,4 +1,4 @@
*test*message*throw_non_error.js:5
*test*message*throw_non_error.js:6
throw ({ foo: 'bar' });
^
[object Object]

View File

@ -1,4 +1,5 @@
'use strict';
require('../common');
// eslint-disable-next-line no-throw-literal
throw null;

View File

@ -1,5 +1,5 @@
*test*message*throw_null.js:4
*test*message*throw_null.js:5
throw null;
^
null

View File

@ -1,4 +1,5 @@
'use strict';
require('../common');
// eslint-disable-next-line no-throw-literal
throw undefined;

View File

@ -1,5 +1,5 @@
*test*message*throw_undefined.js:4
*test*message*throw_undefined.js:5
throw undefined;
^
undefined

View File

@ -394,7 +394,7 @@ threw = false;
try {
assert.throws(
function() {
throw ({});
throw ({}); // eslint-disable-line no-throw-literal
},
Array
);
@ -576,6 +576,7 @@ testBlockTypeError(assert.throws, undefined);
testBlockTypeError(assert.doesNotThrow, undefined);
// https://github.com/nodejs/node/issues/3275
// eslint-disable-next-line no-throw-literal
assert.throws(() => { throw 'error'; }, (err) => err === 'error');
assert.throws(() => { throw new Error(); }, (err) => err instanceof Error);