HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3Lummzs1C_oCxvT9SvnTdkmIPoBcJXVmBV0_SNQ4m8oOHWANprUx4WFyGoP_lTsVg-j
cache-control: public, max-age=3600
expires: Fri, 10 Oct 2025 03:19:27 GMT
last-modified: Fri, 10 Oct 2025 01:12:08 GMT
etag: W/"7bbcd2c5e3a9babde2e9107faeca5971"
x-goog-generation: 1760058728560144
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 165909
x-goog-meta-goog-reserved-file-mtime: 1760057102
x-goog-hash: crc32c=AT0Pww==, md5=e7zSxeOpur3i6RB/rspZcQ==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: 88b3d58453ce9fc3541c72e974dc285a
date: Fri, 10 Oct 2025 02:19:28 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
Error.isError() - JavaScript | MDN
value
が Error
の場合、true
を返します。それ以外の場合は false
を返します。
Error.isError()
は、渡された値が Error
であるかどうかを確認します。これは、Error()
コンストラクターによって初期化されたプライベートフィールドに対する「ブランドチェック」を実行することで行われます。
これは Array.isArray()
で使用されているのと同じ仕組みであり、さらに in
演算子で使用されている仕組みと類似しています。
これは、instanceof Error
よりも堅牢な代替手段あり、誤検知や誤否認を回避することができます。
Error.isError()
は、プロトタイプチェーンに Error.prototype
が存在する場合でも、実際の Error
インスタンスではない値を拒否します。instanceof Error
はプロトタイプチェーンをチェックするため、これらの値を受け入れます。
Error.isError()
は別の領域で構築された Error
オブジェクトを受け入れます。 この場合、instanceof Error
は false
を返します。これは、Error
コンストラクターの同一性が領域間で異なるためです。
Error.isError()
は、DOMException
インスタンスに対して true
を返します。これは、DOMException
が Error
の真のサブクラスとして指定されていないにもかかわらず(Error
コンストラクタは DOMException
コンストラクターのプロトタイプではない)、DOMException
はすべてのブランドチェックの目的において Error
と同様の振る舞いをするためです。
// 以下のものはすべて true を返す
Error.isError(new Error());
Error.isError(new TypeError());
Error.isError(new DOMException());
try {
1 + 1n;
} catch (e) {
console.log(Error.isError(e)); // この操作は TypeError を発生するので、true を返す
}
// 以下のものはすべて false を返す
Error.isError();
Error.isError({});
Error.isError(null);
Error.isError(undefined);
Error.isError(17);
Error.isError("Error");
Error.isError(true);
Error.isError(false);
// これはエラーではない。オブジェクトが Error コンストラクターによって
// 初期化されたプライベートフィールドを持たないため
Error.isError({ __proto__: Error.prototype });
Error
インスタンスをチェックする際は、 Error.isError()
を instanceof
よりも使用することを推奨します。これは領域を超えて動作するためです。
const iframe = document.createElement("iframe");
document.body.appendChild(iframe);
const xError = window.frames[window.frames.length - 1].Error;
const error = new xError();
// 正しく Error をチェックした
Error.isError(error); // true
// このエラーのプロトタイプは xError.prototype であり、
// Error.prototype とは異なるオブジェクトである
error instanceof Error; // false
Error.isError()
を使用して、捕捉された値がエラーかどうかを検出し、エラーオブジェクトに正規化できます。
try {
throw "おっと、これは Error オブジェクトではありません";
} catch (e) {
if (!Error.isError(e)) {
e = new Error(e);
}
console.error(e.message);
}