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:
Julian DaxandRuben Bridgewater authored and GitHub committed 2023-03-26 20:38:27 +00:00
1 parent f0ade7084d
commit 38e6ac7b44
1 file changed
+19 -6
+19 -6
View File
@@ -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`