Permalink
Browse files

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: #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 4, 2017
1 parent 3ca483f commit 2dc8aac1a93ab5a6c73934085228f0e03d66a524
View
@@ -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
@@ -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' });
@@ -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
@@ -6,6 +6,7 @@ console.error('before');
(function() {
// these lines should contain tab!
// eslint-disable-next-line no-throw-literal
throw ({ foo: 'bar' });
})();
@@ -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]
@@ -2,4 +2,5 @@
require('../common');
// custom error throwing
// eslint-disable-next-line no-throw-literal
throw ({ foo: 'bar' });
@@ -1,4 +1,4 @@
*test*message*throw_non_error.js:5
*test*message*throw_non_error.js:6
throw ({ foo: 'bar' });
^
[object Object]
@@ -1,4 +1,5 @@
'use strict';
require('../common');
// eslint-disable-next-line no-throw-literal
throw null;
@@ -1,5 +1,5 @@
*test*message*throw_null.js:4
*test*message*throw_null.js:5
throw null;
^
null
@@ -1,4 +1,5 @@
'use strict';
require('../common');
// eslint-disable-next-line no-throw-literal
throw undefined;
@@ -1,5 +1,5 @@
*test*message*throw_undefined.js:4
*test*message*throw_undefined.js:5
throw undefined;
^
undefined
@@ -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);

0 comments on commit 2dc8aac

Please sign in to comment.