Skip to content

Commit

Permalink
tools: enable no-throw-literal ESLint rule
Browse files Browse the repository at this point in the history
Only throw the Error object itself or an object using the Error object
as base objects for user-defined exceptions.

PR-URL: nodejs#11168
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Teddy Katz <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Roman Reiss <[email protected]>
Reviewed-By: Sakthipriyan Vairamani <[email protected]>
  • Loading branch information
Trott authored and krydos committed Feb 25, 2017
1 parent 0046cfc commit 1f48bb3
Show file tree
Hide file tree
Showing 12 changed files with 13 additions and 6 deletions.
1 change: 1 addition & 0 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions test/message/throw_custom_error.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 1 addition & 1 deletion test/message/throw_custom_error.out
Original file line number Diff line number Diff line change
@@ -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 change: 1 addition & 0 deletions test/message/throw_in_line_with_tabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ console.error('before');

(function() {
// these lines should contain tab!
// eslint-disable-next-line no-throw-literal
throw ({ foo: 'bar' });
})();

Expand Down
2 changes: 1 addition & 1 deletion test/message/throw_in_line_with_tabs.out
Original file line number Diff line number Diff line change
@@ -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 change: 1 addition & 0 deletions test/message/throw_non_error.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
require('../common');

// custom error throwing
// eslint-disable-next-line no-throw-literal
throw ({ foo: 'bar' });
2 changes: 1 addition & 1 deletion test/message/throw_non_error.out
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*test*message*throw_non_error.js:5
*test*message*throw_non_error.js:6
throw ({ foo: 'bar' });
^
[object Object]
1 change: 1 addition & 0 deletions test/message/throw_null.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
'use strict';
require('../common');

// eslint-disable-next-line no-throw-literal
throw null;
2 changes: 1 addition & 1 deletion test/message/throw_null.out
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

*test*message*throw_null.js:4
*test*message*throw_null.js:5
throw null;
^
null
1 change: 1 addition & 0 deletions test/message/throw_undefined.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
'use strict';
require('../common');

// eslint-disable-next-line no-throw-literal
throw undefined;
2 changes: 1 addition & 1 deletion test/message/throw_undefined.out
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

*test*message*throw_undefined.js:4
*test*message*throw_undefined.js:5
throw undefined;
^
undefined
3 changes: 2 additions & 1 deletion test/parallel/test-assert.js
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ threw = false;
try {
assert.throws(
function() {
throw ({});
throw ({}); // eslint-disable-line no-throw-literal
},
Array
);
Expand Down Expand Up @@ -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);

Expand Down

0 comments on commit 1f48bb3

Please sign in to comment.