try/catch/finally、throw、カスタムエラー
try/catch/finallyを使い、シンプルなエラーをthrowし、メッセージを分かりやすくする小さなカスタムErrorを定義します。
「try/catch/finally、throw、カスタムエラー」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/2です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全2レッスンが含まれています。
エラーハンドリングの概要
目標:エラーを安全に捕捉し、プログラムを安定した状態に保ちます。
- try/catchの基本
- 明確なメッセージを付けたthrow
- 後処理のためのfinally
- 小さなカスタムError

try/catchの基本
リスクのある処理をtryで囲みます。catchでは、短く役立つメッセージを表示します。
// try/catch around risky code
try {
const data = JSON.parse("{\"name\":\"Ayla\"}");
console.log("Parsed:", data.name);
} catch (e) {
// e.message is short and useful on mobile
console.log("Failed to parse:", e.message);
}

throwの基本
throw new Error("message")を使うと、処理を停止して何が問題だったかを説明できます。
// Throw when inputs are invalid
function doubleNumber(n) {
if (typeof n !== "number") {
throw new Error("Number required");
}
return n * 2;
}
try {
console.log(doubleNumber(4));
console.log(doubleNumber("4")); // will throw
} catch (e) {
console.log("Error:", e.message);
}

後処理のためのfinally
finallyはtryが成功した場合でも失敗した場合でも実行されます。リソースを閉じる処理などに便利です。
// finally runs after try/catch — great for cleanup
let opened = false;
try {
opened = true;
console.log("Opened:", opened);
// Force an error to see finally still run
JSON.parse("{ bad }");
} catch (e) {
console.log("Caught:", e.message);
} finally {
opened = false;
console.log("Closed:", opened);
}

カスタムError(概要)
入力の問題に対応する小さなInputErrorを作成します。instanceofを使うと、InputErrorを個別に処理できます。
// Make a small custom error
class InputError extends Error {
constructor(message) {
super(message);
this.name = "InputError";
}
}
function positive(n) {
if (typeof n !== "number") {
throw new InputError("Number required");
}
if (n <= 0) {
throw new InputError("Must be positive");
}
return n;
}
try {
console.log("OK:", positive(3));
console.log("Fail:", positive(0));
} catch (e) {
if (e instanceof InputError) {
console.log("Input problem:", e.message);
} else {
// Unknown error: rethrow or log differently
console.log("Unexpected:", e.message);
}
}

ヒントとチェックリスト
ヒント:
- 入力は早い段階で検証し、短いメッセージをthrowします。
- 後処理にはfinallyを使います(フラグやタイマーを閉じる処理など)。
- エラーを握りつぶさず、簡潔にログへ記録するか再throwします。

finallyのクイズ
簡単な確認:finallyの動作です。

振り返り
振り返り:リスクのあるコードをtry/catchで囲み、短く役立つエラーをthrowし、後処理にはfinallyを使い、より明確に処理できる小さなカスタムエラーを定義します。

よくある質問
「try/catch/finally、throw、カスタムエラー」レッスンは無料ですか?
はい。「try/catch/finally、throw、カスタムエラー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全2レッスンが含まれています。
「try/catch/finally、throw、カスタムエラー」で何を学びますか?
try/catch/finallyを使い、シンプルなエラーをthrowし、メッセージを分かりやすくする小さなカスタムErrorを定義します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
JavaScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/2です。
「try/catch/finally、throw、カスタムエラー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJavaScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- try/catch/finally、throw、カスタムエラー
- 防御的プログラミングと入力チェック