TypeScript カスタムエラーの作成の仕方

プログラミング

Errorを丸投げはよくない
Errorを実装したApplicationErrorみたいなのを作成して、
そこから具体的なエラークラスを切り出していくのがいい感じみたい

サンプルコード

// ErrorオブジェクトをApplicationErrorって大きいくくりで実装する
class ApplicationError implements Error {
    // エラー名を設定
    public name = 'ApplictionError';

    // エラーメッセージを引数にとる
    constructor(public message: string) {
        // consoleがあるかないかを確認しとく
        if (typeof console !== 'undefined') {
            console.log(`name: ${this.name}, message: ${this.message}`)
        }
    }
    //  toStringを適当な形で上書きしておく
    toString() {
            return `${this.name} ${this.message}`;
    }
}

// 権限系のエラー
class PermissionError extends ApplicationError {
    // エラーの名前は設定しておく
    public name = 'PermissionError';
}

//  ユーザー作成系のエラー
class UserCreateError extends ApplicationError {
    public name = 'UserCreateError';
}


function notPermitted(isAdmin: boolean) {
    if (!isAdmin) {
        throw new PermissionError('not permitted')
    }
}

try {
    notPermitted(false)
} catch (error) {
    // エラーのタイプで処理を切り分ける
    if (error instanceof PermissionError) {
        // 省略
    }
    if (error instanceof UserCreateError) {
        // 省略
    }
}

具体的に処理内容ごと、エラー内容ごとにエラーハンドリングがしやすくなったり、
バグ調査が楽になりそうでいいなと思いました

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

コメント

  1. sikis izle より:

    Im obliged for the blog post. Really looking forward to read more. Fantastic. Piper Richie Ulphiah

タイトルとURLをコピーしました