I am currently using try/catch to handle JSON.parse errors. But I have just recently found out after reading some best practices that using try/catch on nodejs has some performance overhead. Is the performance overhead fixed already and is there another way to avoid errors on JSON.parse without using try/catch?
Asked
Active
Viewed 2,039 times
1
-
If you don't wrap `JSON.parse` in `try-catch`, it'll throw an Error into the wilderness - so you'll have to catch it somewhere else. So the technique shown in that answer is correct. – raina77ow Sep 05 '14 at 09:33
-
1Related: http://programmers.stackexchange.com/questions/144326/try-catch-in-javascript-isnt-it-a-good-practice – raina77ow Sep 05 '14 at 09:34
2 Answers
1
There is no simple way to avoid try-catch without your own parser.
Try this performance test: http://jsperf.com/try-catch-performance-overhead
Use Chrome for the test, since NodeJS is just V8. In my case there was a 41% performance penalty. However, unless you are going to reading thousands of JSONs per second, I suggest you just use the standard try-catch and make your code readable.
Note that for Firefox, there was virtually no difference between the 3 tests.

psiphi75
- 1,985
- 1
- 24
- 36
0
The problem with using try/catch constructions instead of callback error functions is that try/catch is NOT able to catch asynchronous events and may leak too much data when the exception is caught.
Best practice is to use try/catch at synchronous events:
try
{
dangerous.function();
}
catch(error);
{
console.log(error);
}
and a callback function for asynchronously fired events:
dangerous.function(function(error)
{
console.log(error);
});

Placeholder
- 4,651
- 6
- 33
- 35