util.types.isNativeError(value)
如果值由 内置 Error
类型 的构造函数返回,则返回 true
。
¥Returns true
if the value was returned by the constructor of a
built-in Error
type.
console.log(util.types.isNativeError(new Error())); // true
console.log(util.types.isNativeError(new TypeError())); // true
console.log(util.types.isNativeError(new RangeError())); // true
原生错误类型的子类也是原生错误:
¥Subclasses of the native error types are also native errors:
class MyError extends Error {}
console.log(util.types.isNativeError(new MyError())); // true
作为原生错误类的 instanceof
值不等同于 isNativeError()
为该值返回 true
。isNativeError()
为来自不同 realm 的错误返回 true
,而 instanceof Error
为这些错误返回 false
:
¥A value being instanceof
a native error class is not equivalent to isNativeError()
returning true
for that value. isNativeError()
returns true
for errors
which come from a different realm while instanceof Error
returns false
for these errors:
import { createContext, runInContext } from 'node:vm';
import { types } from 'node:util';
const context = createContext({});
const myError = runInContext('new Error()', context);
console.log(types.isNativeError(myError)); // true
console.log(myError instanceof Error); // false
const { createContext, runInContext } = require('node:vm');
const { types } = require('node:util');
const context = createContext({});
const myError = runInContext('new Error()', context);
console.log(types.isNativeError(myError)); // true
console.log(myError instanceof Error); // false
相反,对于原生错误的构造函数未返回的所有对象,isNativeError()
返回 false
。这包括 instanceof
原生错误的值:
¥Conversely, isNativeError()
returns false
for all objects which were not
returned by the constructor of a native error. That includes values
which are instanceof
native errors:
const myError = { __proto__: Error.prototype };
console.log(util.types.isNativeError(myError)); // false
console.log(myError instanceof Error); // true