#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿