エラーバウンダリー(概念)をフレームワークなしで実装
プレーンなJSで小さなエラーバウンダリーを作ります。危険なコードをtry/catchで囲み、ラッパーヘルパー、非同期のtry/catch、フォールバック値、最小限のログを扱います。
「エラーバウンダリー(概念)をフレームワークなしで実装」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全3レッスンが含まれています。
全体像
目標: 1つの失敗で画面全体が壊れないようにします。
- リスクのある箇所をtry/catchで囲みます
- 小さなrunSafeヘルパーを追加します
- async処理もtry/catchで扱います
- フォールバックを返し、簡潔にログを記録します

ローカル境界: パース
リスクのあるステップ(JSON.parse)だけをラップします。失敗した場合はシンプルなフォールバックオブジェクトを返します。
// Try/catch boundary: parse user JSON with a fallback
function safeParseUser(json) {
try {
const obj = JSON.parse(json);
// minimal validation
if (!obj || typeof obj.name !== "string") {
return { name: "Guest" };
}
return { name: obj.name };
} catch (err) {
// fallback on parse error
return { name: "Guest" };
}
}
console.log("ok:", safeParseUser("{\"name\":\"Ayla\"}"));
console.log("bad:", safeParseUser("{oops}"));

runSafeヘルパー
小さなヘルパーを作成して再利用します。ログは短く保ち、秘密情報を漏らさないようにします。
// A tiny boundary helper for sync functions
function runSafe(fn, fallback) {
try {
return fn();
} catch (e) {
// log minimal info for beginners
console.log("error:", String(e));
return fallback;
}
}
// Use it
const resultOk = runSafe(function () {
return 2 + 2;
}, 0);
const resultFail = runSafe(function () {
// simulate crash
throw new Error("boom");
}, 0);
console.log("ok:", resultOk, "fail:", resultFail);

非同期処理の境界
async処理では、awaitをtry/catchで囲み、フォールバックの文字列または値を返します。
// Async boundary: try/catch inside an async function
async function fetchNameFake(id) {
// simulate failure for odd ids
if (id % 2 === 1) {
throw new Error("not found");
}
return "Ayla";
}
async function loadName(id) {
try {
const name = await fetchNameFake(id);
return name;
} catch (e) {
console.log("async error:", String(e));
return "Guest";
}
}
(async function () {
console.log("even:", await loadName(2));
console.log("odd :", await loadName(3));
})();

リスクを分離する
アプリ全体をラップしてはいけません。リスクのあるステップを分離し、失敗がすべての処理を止めないようにします。
// Boundary only around the risky step, rest continues
function renderCard(userJson) {
// boundary: parse
const user = safeParseUser(userJson);
// rest of rendering can continue with fallback
return "Hello " + user.name;
}
console.log(renderCard("{\"name\":\"Lina\"}"));
console.log(renderCard("{broken}")); // still renders with fallback

境界を設ける習慣
チェックリスト:
- リスクのある呼び出しを小さなtry/catchで囲みます。
- 小さなフォールバック値を返します。
- 簡潔にログを記録します(秘密情報は含めません)。
- async呼び出しにも同じパターンを適用します。

エラー境界の基礎クイズ
クイックチェック: Plain JSのエラー境界を確認します。

まとめ
まとめ: リスクのあるコードをローカルのtry/catchで囲み、runSafeヘルパーを使い、async処理をtry/catchで扱い、画面が動作し続けるようにフォールバックを用意します。

よくある質問
「エラーバウンダリー(概念)をフレームワークなしで実装」レッスンは無料ですか?
はい。「エラーバウンダリー(概念)をフレームワークなしで実装」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全3レッスンが含まれています。
「エラーバウンダリー(概念)をフレームワークなしで実装」で何を学びますか?
プレーンなJSで小さなエラーバウンダリーを作ります。危険なコードをtry/catchで囲み、ラッパーヘルパー、非同期のtry/catch、フォールバック値、最小限のログを扱います。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「エラーバウンダリー(概念)をフレームワークなしで実装」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 入力検証とエスケープの基礎
- 安全なオブジェクトマージ、凍結と封印
- エラーバウンダリー(概念)をフレームワークなしで実装