mirror of https://github.com/lukechilds/node.git
Browse Source
The second argument of the post callback is a boolean indicating whether the callback threw and was intercepted by uncaughtException or a domain. Currently node::MakeCallback has no way of retrieving a uid for the object. This is coming in a future patch. PR-URL: https://github.com/nodejs/node/pull/5756 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Andreas Madsen <amwebdk@gmail.com>process-exit-stdio-flushing
Trevor Norris
9 years ago
3 changed files with 44 additions and 2 deletions
@ -0,0 +1,34 @@ |
|||
'use strict'; |
|||
|
|||
require('../common'); |
|||
const assert = require('assert'); |
|||
const async_wrap = process.binding('async_wrap'); |
|||
var asyncThrows = 0; |
|||
var uncaughtExceptionCount = 0; |
|||
|
|||
process.on('uncaughtException', (e) => { |
|||
assert.equal(e.message, 'oh noes!', 'error messages do not match'); |
|||
}); |
|||
|
|||
process.on('exit', () => { |
|||
process.removeAllListeners('uncaughtException'); |
|||
assert.equal(uncaughtExceptionCount, 1); |
|||
assert.equal(uncaughtExceptionCount, asyncThrows); |
|||
}); |
|||
|
|||
function init() { } |
|||
function post(id, threw) { |
|||
if (threw) |
|||
uncaughtExceptionCount++; |
|||
} |
|||
|
|||
async_wrap.setupHooks({ init, post }); |
|||
async_wrap.enable(); |
|||
|
|||
// Timers still aren't supported, so use crypto API.
|
|||
// It's also important that the callback not happen in a nextTick, like many
|
|||
// error events in core.
|
|||
require('crypto').randomBytes(0, () => { |
|||
asyncThrows++; |
|||
throw new Error('oh noes!'); |
|||
}); |
Loading…
Reference in new issue