Browse Source

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>
v7.x
Rich Trott 8 years ago
committed by Italo A. Casas
parent
commit
2dc8aac1a9
No known key found for this signature in database GPG Key ID: 23EFEFE93C4CFFFE
  1. 1
      .eslintrc.yaml
  2. 1
      test/message/throw_custom_error.js
  3. 2
      test/message/throw_custom_error.out
  4. 1
      test/message/throw_in_line_with_tabs.js
  5. 2
      test/message/throw_in_line_with_tabs.out
  6. 1
      test/message/throw_non_error.js
  7. 2
      test/message/throw_non_error.out
  8. 1
      test/message/throw_null.js
  9. 2
      test/message/throw_null.out
  10. 1
      test/message/throw_undefined.js
  11. 2
      test/message/throw_undefined.out
  12. 3
      test/parallel/test-assert.js

1
.eslintrc.yaml

@ -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

1
test/message/throw_custom_error.js

@ -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' });

2
test/message/throw_custom_error.out

@ -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

1
test/message/throw_in_line_with_tabs.js

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

2
test/message/throw_in_line_with_tabs.out

@ -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]

1
test/message/throw_non_error.js

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

2
test/message/throw_non_error.out

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

1
test/message/throw_null.js

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

2
test/message/throw_null.out

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

1
test/message/throw_undefined.js

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

2
test/message/throw_undefined.out

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

3
test/parallel/test-assert.js

@ -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);

Loading…
Cancel
Save