単純に Error のインスタンスを作って throw
throw new Error("aa")
◯ assign
エラー処理などに使う補足のデータを含めたいとき
プロパティとして Error オブジェクトに追加する
throw Object.assign(new Error("aa"), { detail: "xxxx" })
◯ object
Error オブジェクトと補足情報を別々にもつオブジェクトを throw する
throw 対象は Error オブジェクトじゃなくてもいい
throw { error: new Error("aa"), detail: "xxxx" }
◯ custom error type
ちゃんとした作りにするなら Error を継承したそれ用の型を作るのがたぶん適切
異なる型なので特別なプロパティを持ってそうということが伝わるし instanceof で種別判定もできる
class AaError extends Error {
constructor(message, detail) {
super(message)
this.detail = detail
}
}
throw new AaError("aa", "xxxx")
◯ no error object
Error オブジェクトは特に必須じゃない
スタックトレースが要らないなら省いてもいい
throw { error: "aa", detail: "aa-error" }