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: #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>
  • Loading branch information
Trott authored and italoacasas committed Feb 14, 2017
1 parent 3ca483f commit 2dc8aac
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 2dc8aac

Please sign in to comment.