7

node.js uncaughtException のスタック トレースをキャッチしようとしていますが、さまざまなエラーでは正常に機能しますが、throw() ステートメントでは機能しません。

例外処理のスタック トレースを修正します。

$ 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._compile (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
$

throw() が原因で発生した例外のスタック トレースがありません:

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

$ node errorThrow.js 
uncaughtException occurred: undefined
$

理由はありますか?

ありがとうホセ

免責事項: process.on('uncaughtException') を使用することは非常に悪いことであり、罰せられることはわかっていますが、このコードではドメインを使用することはできません。

4

1 に答える 1