doc: Warn against uncaughtException
dependency.
State in the documentation that `uncaughtException` is not a reliable way to restart a crashed application, and clarify that an application may crash in ways that do not trigger this event. Use a documented synchronous function in example code. Fixes: https://github.com/nodejs/node/issues/6223 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/6378
This commit is contained in:
parent
c09dfe3a0b
commit
2fe277a05c
@ -149,10 +149,11 @@ most convenient for scripts).
|
||||
added: v0.1.18
|
||||
-->
|
||||
|
||||
The `'uncaughtException'` event is emitted when an exception bubbles all the
|
||||
way back to the event loop. By default, Node.js handles such exceptions by
|
||||
printing the stack trace to `stderr` and exiting. Adding a handler for the
|
||||
`'uncaughtException'` event overrides this default behavior.
|
||||
The `'uncaughtException'` event is emitted when an uncaught JavaScript
|
||||
exception bubbles all the way back to the event loop. By default, Node.js
|
||||
handles such exceptions by printing the stack trace to `stderr` and exiting.
|
||||
Adding a handler for the `'uncaughtException'` event overrides this default
|
||||
behavior.
|
||||
|
||||
The listener function is called with the `Error` object passed as the only
|
||||
argument.
|
||||
@ -161,7 +162,7 @@ For example:
|
||||
|
||||
```js
|
||||
process.on('uncaughtException', (err) => {
|
||||
console.log(`Caught exception: ${err}`);
|
||||
fs.writeSync(1, `Caught exception: ${err}`);
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
@ -192,8 +193,12 @@ times nothing happens - but the 10th time, the system becomes corrupted.
|
||||
|
||||
The correct use of `'uncaughtException'` is to perform synchronous cleanup
|
||||
of allocated resources (e.g. file descriptors, handles, etc) before shutting
|
||||
down the process. It is not safe to resume normal operation after
|
||||
`'uncaughtException'`.
|
||||
down the process. **It is not safe to resume normal operation after
|
||||
`'uncaughtException'`.**
|
||||
|
||||
To restart a crashed application in a more reliable way, whether `uncaughtException`
|
||||
is emitted or not, an external monitor should be employed in a separate process
|
||||
to detect application failures and recover or restart as needed.
|
||||
|
||||
### Event: 'unhandledRejection'
|
||||
<!-- YAML
|
||||
|
Loading…
x
Reference in New Issue
Block a user