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) {
// 省略
}
}
具体的に処理内容ごと、エラー内容ごとにエラーハンドリングがしやすくなったり、
バグ調査が楽になりそうでいいなと思いました
コメント
Im obliged for the blog post. Really looking forward to read more. Fantastic. Piper Richie Ulphiah