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