#11 TypeScriptで学ぶエラーハンドリングの基本

TypeScriptのエラーハンドリングは、JavaScriptと同じtry・catchを使いますが、型の扱いに少し注意が必要な部分があります。この記事では、TypeScriptにおけるエラーハンドリングの基本を解説します。

try・catchの基本

try {
    const data = JSON.parse(text);
} catch (error) {
    console.log("正しい形式ではありません");
}

catchの中のerrorはunknown型

TypeScriptでは、catchの中のerrorは、安全のためunknownという「何の型か分からない」型として扱われます。中身を扱う前に、型を確認する必要があります。

try {
    // 何らかの処理
} catch (error) {
    if (error instanceof Error) {
        console.log(error.message);
    }
}

finallyという必ず実行される部分

try {
    // 何らかの処理
} finally {
    console.log("処理が終わりました");
}

後片付けの処理を書くのに使われる点は、他の言語のfinallyと同じです。

独自のエラークラスを作る

標準のErrorを継承して、独自のエラークラスを定義することもできます。

class ValidationError extends Error {
    constructor(message: string) {
        super(message);
        this.name = "ValidationError";
    }
}

try {
    throw new ValidationError("入力値が不正です");
} catch (error) {
    if (error instanceof ValidationError) {
        console.log("検証エラー:", error.message);
    }
}

instanceofで独自のエラークラスかどうかを判定できるため、エラーの種類ごとに異なる対処をしたい場合に便利です。

TypeScriptならではの注意点

JavaScriptの感覚でerror.messageのようにいきなりアクセスしようとすると、TypeScriptがエラーとして教えてくれます。これは、投げられる値が必ずしもErrorオブジェクトとは限らないためです。instanceof Errorで確認してから中身を使う、という一手間を覚えておきましょう。

まとめ

TypeScriptのエラーハンドリングはJavaScriptと同じtry・catchが基本ですが、errorがunknown型として扱われる点に注意が必要です。独自のエラークラスも活用しつつ、型を確認してから安全に扱いましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

TypeScriptをもっと学びたい方には「プロを目指す人のためのTypeScript入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本