【TypeScript】Errorオブジェクト

目次

はじめに

この記事ではTypeScriptにおけるErrorオブジェクトについて解説します。

Errorオブジェクトとは…?

Errorオブジェクトはプログラムの実行にエラーが発生した場合に発生するオブジェクトになります。

 Errorオブジェクトは標準で用意されているものもありますが、基底オブジェクトとして利用して独自のエラーを定義することもできます。

 Errorオブジェクトのハンドリングである例外処理(try-catch)については以下の記事をご覧ください。

標準で用意されているErrorオブジェクト

JavaScriptのものですが、標準で用意されている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オブジェクトについて解説しました。

是非、いいねやコメントをお願いします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次