https://qiita.com/rana_kualu/items/8bafecd760ae69cfac41#error-cause
}
インスタンス化されていないので、静的でないインスタンスフィールドに値を入れたりはできません。
エラーが連鎖したときに、親を.cause
で辿れるようにします。
try{
try{
try{
throw new Error('Error1');
}catch(e){
throw new Error('Error2', {cause: e});
}
}catch(e){
throw new Error('Error3', {cause: e});
}
}catch(e){
console.table(e); // Error3
console.table(e.cause); // Error2
console.table(e.cause.cause); // Error1
}
第二引数にcause
を指定しなければなりません。
適当にhoge
とか渡しても持って行ってくれません。
エラーをキャッチして何かの付加情報を付けて再度エラーを出すみたいなことは時々やりたくなりますが、これまでは一般的な方法がなく、ライブラリやプロジェクトによって異なる書き方がされていました。 今後はこれに統一されることで、親を辿るのが楽になるでしょう。
地味で地道だ。
いやなんというか、これまでのECMAScriptのProposalってどうも見た目の派手さばっかり求めて足元がおざなりって感じを受けていたのですが、今回ES2022に入ったのは、地味ながらも必要性が高く地道に使い勝手の高いものが多いという印象です。 個人の印象なので実際どうかは知りませんけどね。
新機能の多くはオブジェクトに関するものであり、これで他言語と遜色ないレベルでのクラス構文が書けるようになったと言っていいのではないでしょうか。
あとは早く;
必須にして。
Why not register and get more from Qiita?
What you can do with signing up
Comments