目次
はじめに
この記事ではTypeScriptにおけるErrorオブジェクトについて解説します。
Errorオブジェクトとは…?
Errorオブジェクトはプログラムの実行にエラーが発生した場合に発生するオブジェクトになります。
Errorオブジェクトは標準で用意されているものもありますが、基底オブジェクトとして利用して独自のエラーを定義することもできます。
Errorオブジェクトのハンドリングである例外処理(try-catch)については以下の記事をご覧ください。
Tomokiの技術ブログ


Tomokiの技術ブログ | 【TypeScript】例外処理
この記事ではTypeScriptにおける例外処理について解説します。例外処理はプログラムの実行中に想定しないエラーが発生した場合にプログラムが落ちることなく処理を続行する…
標準で用意されているErrorオブジェクト
JavaScriptのものですが、標準で用意されているErrorオブジェクトは詳細は以下をご覧ください。
あわせて読みたい


Error – JavaScript | MDN
Error オブジェクトは、実行時エラーが発生した時に発生します。 Error オブジェクトは、ユーザー定義の例外の基底オブジェクトとして使用することもできます。標準の組み…
独自のエラーの定義
独自のエラーの実装例は以下となります。
Errorオブジェクトを継承してベースとなるオブジェクトを定義します。
class BaseError extends Error {
constructor(e?: string) {
super(e);
this.name = new.target.name;
// 下記の行はTypeScriptの出力ターゲットがES2015より古い場合(ES3, ES5)のみ必要
Object.setPrototypeOf(this, new.target.prototype);
}
}
BaseErrorオブジェクトを継承して独自のエラーの定義をします。
以下の例ではステータスコードを保持するエラークラスを定義します。
class NetworkAccessError extends BaseError {
constructor(public statusCode: number, e?: string) {
super(e);
}
}
使用例は以下です。
function fetchUser(): string {
try {
// 通信が発生する処理
} catch {
throw NetworkAccessError(500, "サーバーエラー");
}
}
try {
const user = fetchUser();
} catch (e) {
if (e instanceof NetworkAccessError) {
// この節では、eはNetworkAccessErrorのインスタンスなので、
// ↓のe.をタイプすると、statusCodeがサジェストされる
if (e.statusCode >= 500) {
console.log("サーバー側でエラーが発生しました。");
} else {
console.log("クライアント側でエラーが発生しました。");
}
} else {
console.log("エラーが発生しました。");
}
}
まとめ
この記事ではTypeScriptにおけるErrorオブジェクトについて解説しました。
是非、いいねやコメントをお願いします。
コメント