/
index.md
82 lines (56 loc) · 2.76 KB
/
index.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
---
title: reportError() グローバル関数
short-title: reportError()
slug: Web/API/reportError
l10n:
sourceCommit: 76717f752447b6eef25bf29c12272e407ee5cb6b
---
{{APIRef}} {{AvailableInWorkers}}
**`reportError()`** グローバルメソッドは、 JavaScript の捕捉されない例外をエミュレートして、コンソールやグローバルイベントハンドラにエラーを報告するために使用することができます。
この機能は、主にカスタムイベント配信ライブラリーや コールバック操作ライブラリーを対象としています。
ライブラリはこの機能を使用して、コールバックコードのエラーを捕捉し、最上位のハンドラーに投げ直すことができます。
これにより、 1 つのコールバックで例外が発生しても、他のコールバックが処理されなくなることがなくなると同時に、スタックトレース情報が最上位レベルのデバッグに利用できるようになります。
<!-- {{EmbedInteractiveExample("pages/js/self-reporterror.html")}} -->
## 構文
```js-nolint
reportError(throwable)
```
### 引数
- `throwable`
- : エラーオブジェクト、例えば {{jsxref("TypeError")}} です。
### 返値
なし ({{jsxref("undefined")}})。
### 例外
- {{jsxref("TypeError")}}
- : エラー引数なしでこのメソッドが呼び出された場合。
## 例
このメソッドが使用できるかどうかの機能検出です。
```js
if (typeof self.reportError === "function") {
// この関数が定義されている
}
```
以下のコードでは、どのようにエラーを作成して報告する方法、グローバルな `onerror` ハンドラーを使用するか、 `error` イベントのリスナーを追加してエラーを捕捉する方法を示しています。
`onerror` に割り当てられたハンドラーは、 `true` を返さなければ、イベントがそれ以上伝播しないことに注意してください。
```js
const newError = new Error("エラーメッセージ", "someFile.js", 11);
self.reportError(newError);
window.onerror = (message, source, lineno, colno, error) => {
console.error(`メッセージ: ${error.message}、行番号: ${lineno}`);
return true;
};
self.addEventListener("error", (error) => {
console.error(error.filename);
});
// 出力
// > "メッセージ: エラーメッセージ、行番号: 11"
// > "someFile.js"
```
## 仕様書
{{Specifications}}
## ブラウザーの互換性
{{Compat}}
## 関連情報
- [`Window`](/ja/docs/Web/API/Window#methods_implemented_from_elsewhere)
- [`WorkerGlobalScope`](/ja/docs/Web/API/WorkerGlobalScope#methods_implemented_from_elsewhere)
- [error](/ja/docs/Web/API/HTMLElement/error_event) イベント