最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Missing stack trace on node.js uncaughtException generated by throw() - Stack Overflow

programmeradmin5浏览0评论

I'm trying to catch the stack trace of an node.js uncaughtException and it works fine for different errors but not for throw() statements:

Correct stack trace on exception handling:

$ cat errorFunc.js 
process.on('uncaughtException', function(exception) {
    console.log('uncaughtException occurred: ' + exception.stack);
});
MyError();

$ node errorFunc.js 
    uncaughtException occurred: ReferenceError: MyError is not defined
    at Object.<anonymous> (/home/jolcese/code/WebEnclaves/Server/errorFunc.js:5:1)
    at Module._pile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
$

Missing stack trace on exception caused by throw():

$ cat errorThrow.js 
process.on('uncaughtException', function(exception) {
    console.log('uncaughtException occurred: ' + exception.stack);
});
throw('my error');

$ node errorThrow.js 
uncaughtException occurred: undefined
$

Any idea why?

Thanks Jose

Disclaimer: I know that using process.on('uncaughtException') is a very, very bad thing and I will be punished but using domains is not an option in this code.

I'm trying to catch the stack trace of an node.js uncaughtException and it works fine for different errors but not for throw() statements:

Correct stack trace on exception handling:

$ cat errorFunc.js 
process.on('uncaughtException', function(exception) {
    console.log('uncaughtException occurred: ' + exception.stack);
});
MyError();

$ node errorFunc.js 
    uncaughtException occurred: ReferenceError: MyError is not defined
    at Object.<anonymous> (/home/jolcese/code/WebEnclaves/Server/errorFunc.js:5:1)
    at Module._pile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
$

Missing stack trace on exception caused by throw():

$ cat errorThrow.js 
process.on('uncaughtException', function(exception) {
    console.log('uncaughtException occurred: ' + exception.stack);
});
throw('my error');

$ node errorThrow.js 
uncaughtException occurred: undefined
$

Any idea why?

Thanks Jose

Disclaimer: I know that using process.on('uncaughtException') is a very, very bad thing and I will be punished but using domains is not an option in this code.

Share Improve this question asked May 23, 2013 at 16:17 JoseOlceseJoseOlcese 5326 silver badges14 bronze badges 1
  • Keep on mind that according to MDN the stacktrace property is non-standard – Buksy Commented Nov 2, 2022 at 13:23
Add a ment  | 

1 Answer 1

Reset to default 7

JavaScript lets you throw anything.

If you want to throw errors with stack traces in JavaScript, you need to throw Error objects. (specification )

Also, throw is an operator and not a function.

Try

throw new Error('my error');

See the manual on Mozilla Developer Network for more information.

发布评论

评论列表(0)

  1. 暂无评论