In my NodeJS program, I parse some user JSON file.
So I use :
this.config = JSON.parse(fs.readFileSync(path));
The problem is that if the json file is not correctly formated, the error thrown is like:
undefined:55 }, ^ SyntaxError: Unexpected token } at Object.parse (native) at new MyApp (/path/to/docker/lib/node_modules/myApp/lib/my-app.js:30:28) ...
As it is not really user friendly I would like to throw an Error
specifying some user friendly message (like “your config file is not well formated”) but I want to keep the stacktrace in order to point to the problematic line.
In the Java world I used throw new Exception("My user friendly message", catchedException)
in order to have the original exception which caused that one.
How is it possible in the JS world?
Advertisement
Answer
What I finally did is:
try { this.config = JSON.parse(fs.readFileSync(path)); } catch(err) { var newErr = new Error('Problem while reading the JSON file'); newErr.stack += 'nCaused by: '+err.stack; throw newErr; }