mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
doc: improve example for Error.captureStackTrace()
Change the `MyError` example so that instances of `MyError`are `instanceof Error` and also native errors when checked with `util.types.isNativeError()`. Co-authored-by: Ruben Bridgewater <ruben@bridgewater.de> PR-URL: https://github.com/nodejs/node/pull/46886 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Debadree Chatterjee <debadree333@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
1 parent
f0ade7084d
commit
38e6ac7b44
1 file changed
+19
-6
+19
-6
@@ -232,14 +232,27 @@ The `constructorOpt` argument is useful for hiding implementation
|
||||
details of error generation from the user. For instance:
|
||||
|
||||
```js
|
||||
function MyError() {
|
||||
Error.captureStackTrace(this, MyError);
|
||||
function a() {
|
||||
b();
|
||||
}
|
||||
|
||||
// Without passing MyError to captureStackTrace, the MyError
|
||||
// frame would show up in the .stack property. By passing
|
||||
// the constructor, we omit that frame, and retain all frames below it.
|
||||
new MyError().stack;
|
||||
function b() {
|
||||
c();
|
||||
}
|
||||
|
||||
function c() {
|
||||
// Create an error without stack trace to avoid calculating the stack trace twice.
|
||||
const { stackTraceLimit } = Error;
|
||||
Error.stackTraceLimit = 0;
|
||||
const error = new Error();
|
||||
Error.stackTraceLimit = stackTraceLimit;
|
||||
|
||||
// Capture the stack trace above function b
|
||||
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
|
||||
throw error;
|
||||
}
|
||||
|
||||
a();
|
||||
```
|
||||
|
||||
### `Error.stackTraceLimit`
|
||||
|
||||
Reference in new issue
Block a user