js-primer icon indicating copy to clipboard operation
js-primer copied to clipboard

ES2022: Error Cause

Open azu opened this issue 2 years ago • 3 comments

  • https://github.com/asciidwango/js-primer/issues/1337#issuecomment-1000668450_

ここで対応しないとしていたけど、再検討する。

具体的には次の場所では、Error causeを使った方が明らかに良いので、ここで使えるように基礎文法で紹介したい。

function main() {
    fetchUserInfo("js-primer-example")
        .catch((error) => {
            // Promiseチェーンの中で発生したエラーを受け取る
            console.error(`エラーが発生しました (${error})`);
        });
}

Promiseを活用する · JavaScript Primer #jsprimer

TODO

課題として、Error Causeの効果(スタックトレースの話とか)をどうやって表現するかという問題がありそう

azu avatar Feb 10 '24 05:02 azu

他にも文中にこういうケースがないかは見つけないといけない。 非同期 or try-catchぐらいだと思うので、ないような気もしているけどどうだろ?

azu avatar Feb 10 '24 11:02 azu

@himanoa さんに担当してもらう。

入れること自体(Error Cause自体の説明とPromiseを活用するなどでの利用)は多分そこまで難しくないのですが、 例外処理で、スタックトレースの説明が最後になってるので、 スタックトレースの説明してからじゃないとError Causeを説明できない気がしていて、説明の順番どうしようというのがちょっと悩みどころになってます。

エラーとデバッグの中に入れてしまうか、もうちょっとセクションを整理して再構成する(スタックトレースをErrorあたりとか前の方に持ってくる)などの選択肢がありそうな気はします。

あとは、Error Cause自体をシンプルに意味ある説明をしようとすると、re-throwになる気がしてて、 エラーメッセージを書き換えつつスタックトレースは維持するには?(or シンプルにError Cause[^E2022]というタイトル) という感じのセクションを追加(コラムっぽい感じもしますが、ユースケースで使うので本文として入れる)的な方法が良いのかもなーとも思ったりします。

azu avatar Mar 24 '24 01:03 azu

@azu 説明ありがとうございます!

例外処理の最後に Error Cause[^E2022] のセクションを追加して、re-throwした時にスタックトレースを維持するための説明を書く方針で進めようとおもいます!

himanoa avatar Mar 24 '24 05:03 himanoa

  • https://github.com/mochajs/mocha/pull/4829

Error Causeの表示を対応してる例

azu avatar Mar 26 '24 23:03 azu