2022年4月24日のブックマーク (2件)

  • Error の cause オプションによってエラーの再 throw 時にスタックトレースが失われるのを防ぐ【ES2022】 - Qiita

    メッセージに error.message や error.trace を連結して入れるのも手ですが、メッセージとしては読みづらく使いづらいです。 よってこれまでは、コード全体のエントリポイントなどでまとめてエラーをキャッチしスタックトレースが失われない形で処理するなどしていたかと思います。 Error の cause オプション ES2022 で入った機能で、このように Error の第二引数にオプションで cause を渡せるようになりました。

    Error の cause オプションによってエラーの再 throw 時にスタックトレースが失われるのを防ぐ【ES2022】 - Qiita
    yamadashy
    yamadashy 2022/04/24
    Error の cause オプションについて書きました
  • イベントループと TypeScript の型から理解する非同期処理

    このは、ブルーベリーの 8 章からインスパイアされて、 TS の型が示す情報から Promise というものを理解してみる、というアプローチで書いたJSの非同期処理の解説です。 これらの資料と合わせて読むことを推奨します。 JSのイベントループのイメージを掴む JSでは中々意識することが少ないですが、正しく理解するには OS レベルのスレッドの視点で考え始める必要があります。 ブラウザや Node.js では一つのスクリプト実行単位を1つのスレッドに割り当てます。それをメインスレッドと呼んだり、ブラウザだったら UI スレッドと呼んだりします。 例えばブラウザでは、これは秒間60回、つまり 16.6ms ごとにループを呼び出します。(node だったらこれがもっと短いです) 仮に setTimeout の実装がなかったとして、それ相当の擬似コードを書くのを試みます。 let handl

    イベントループと TypeScript の型から理解する非同期処理
    yamadashy
    yamadashy 2022/04/24
    “catch しての再 throw すると、コールスタックが失われて、本来のエラー発生のスタックが見えなくなってしまうからです。” 最近だと Error('', {cause: e}) とかすればキャッチしたエラーも渡せるよね。