Browse Source

Throw Error objects instead of strings (#497)

Unlike strings, Error objects allow you to get stack traces.
Also, a lot of libraries will complain if they encounter a
thrown non-Error object.

This is in line with standard Javascript best practices.
Per https://eslint.org/docs/rules/no-throw-literal:
pull/581/head
Gabe Gorelick 6 years ago committed by Sergi Almacellas Abellana
parent
commit
2151cf1b90
  1. 2
      .eslintrc.js
  2. 8
      papaparse.js

2
.eslintrc.js

@ -178,7 +178,7 @@ module.exports = { @@ -178,7 +178,7 @@ module.exports = {
"no-tabs": "off",
"no-template-curly-in-string": "error",
"no-ternary": "off",
"no-throw-literal": "off",
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-undef-init": "error",
"no-undefined": "off",

8
papaparse.js

@ -331,7 +331,7 @@ if (!Array.isArray) @@ -331,7 +331,7 @@ if (!Array.isArray)
}
// Default (any valid paths should return before this)
throw 'exception: Unable to serialize unrecognized input';
throw new Error('Unable to serialize unrecognized input');
function unpackConfig()
@ -1368,7 +1368,7 @@ if (!Array.isArray) @@ -1368,7 +1368,7 @@ if (!Array.isArray)
// Comment character must be valid
if (comments === delim)
throw 'Comment character same as delimiter';
throw new Error('Comment character same as delimiter');
else if (comments === true)
comments = '#';
else if (typeof comments !== 'string'
@ -1387,7 +1387,7 @@ if (!Array.isArray) @@ -1387,7 +1387,7 @@ if (!Array.isArray)
{
// For some reason, in Chrome, this speeds things up (!?)
if (typeof input !== 'string')
throw 'Input must be a string';
throw new Error('Input must be a string');
// We don't need to compute some of these every time parse() is called,
// but having them in a more local scope seems to perform better
@ -1770,7 +1770,7 @@ if (!Array.isArray) @@ -1770,7 +1770,7 @@ if (!Array.isArray)
}
function notImplemented() {
throw 'Not implemented.';
throw new Error('Not implemented.');
}
/** Callback when worker thread receives a message */

Loading…
Cancel
Save