JavaScriptジェネレーターのthrowメソッドを理解する方法は?

レオ

これは私のコードスニペットです。

var g = function*() {
  try {
    yield;
  } catch (e) {
    console.log("inner catch", e);
  }
};

var i = g();
i.next();

try {
  i.throw("a");
  i.throw("b");
} catch (e) {
  console.log("outer catch", e);
}

私はこの結果を期待しています:

inner catch a
inner catch a

では、なぜの内側のキャッチがgenerator2回キャッチできないのですか?

user8897421

これは、ジェネレーターcatchが最初のジェネレーターの後に移動したthrow()ためtry、2番目のジェネレーターをキャッチすることができ、例外がその呼び出し位置から伝播するためです。

var g = function*() {
  try {
   yield;
  } catch (e) {
   console.log("inner catch", e); 
   try {
     yield;
   } catch (e) {
     console.log("inner catch 2", e);
   }
  }
};

var i = g();
i.next();

try {
  i.throw("a");
  i.throw("b");
} catch (e) {
  console.log("outer catch", e);
}

try/catchステートメントをネストする必要がないようにするには、ループが必要です。

var g = function*() {
  while (true) {
   try {
    yield;
   } catch (e) {
    console.log("inner catch", e); 
    if (e === "b") {
      console.log("breaking loop");
      break;
    }
   }
  }
};

var i = g();
i.next();

try {
  i.throw("a");
  i.throw("b");
  i.throw("c");
} catch (e) {
  console.log("outer catch", e);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascriptジェネレーターthrow()メソッドはイテレーターを進めますか?

分類Dev

javascriptジェネレーターを理解する方法は?

分類Dev

あるメソッドが別のメソッドのジェネレーターから次の値を取得する方法はありますか?

分類Dev

djangoテンプレートでジェネレーターメソッドを使用する方法は?

分類Dev

クラス内のメソッドをジェネレーターにすることはできますか?

分類Dev

node.jsのオブジェクトリテラルでES6ジェネレーターメソッドを指定する方法はありますか?

分類Dev

イテレータのジェネリックメソッドを実装する適切な方法

分類Dev

JavaScriptのジェネレーターを理解する

分類Dev

ネストされたジェネレーターでjqwikジェネレーターメソッドを作成する方法

分類Dev

ネストされたジェネレーターでjqwikジェネレーターメソッドを作成する方法

分類Dev

検索を実行するために、ジェネリックセレクターFunc <T、U>を何らかのメソッドに渡す方法は?

分類Dev

クラス内のジェネレーターメソッドをオーバーライドする

分類Dev

ジェネリック メソッドで型パラメーターの値を参照する方法

分類Dev

パラメータArray <Codable>を使用してジェネリックメソッドを宣言する方法は?

分類Dev

.NETジェネリックメソッドで、実際のパラメータタイプを取得する方法

分類Dev

ジェネリックインターフェイスメソッドを正しく実装する方法は?

分類Dev

ジェネリックインターフェイスメソッドを実行する正しい方法は?

分類Dev

メソッド.toArray(IntFunction <A []>ジェネレーター)が新しい配列のサイズを知る方法

分類Dev

ジェネリック関数のメソッドのパラメータを実装する方法?

分類Dev

ジェネリックメソッドの各パラメータの型を取得する方法

分類Dev

Pythonでジェネレーターを装飾する:yieldの間にメソッドを呼び出す

分類Dev

インターフェイスのジェネリックメソッドを実装する方法

分類Dev

ジェネリックインターフェイスのメソッドを実装するには?

分類Dev

生の型パラメーターではなく、ジェネリックパラメーターのみを受け入れるジェネリックメソッドを作成する方法

分類Dev

Roslyn で、メソッド パラメータの型/戻り型がジェネリックであるかどうかを確認する方法は?

分類Dev

<T>の配列のジェネリックメソッドとパラメータ配列を操作する方法は?

分類Dev

UMLメソッドでジェネリックパラメーターを表す方法は?

分類Dev

ジェネリックメソッドで不要な型パラメーターを減らす方法は?

分類Dev

ジェネリックメソッド参照をパラメーターとして渡す方法は?

Related 関連記事

  1. 1

    Javascriptジェネレーターthrow()メソッドはイテレーターを進めますか?

  2. 2

    javascriptジェネレーターを理解する方法は?

  3. 3

    あるメソッドが別のメソッドのジェネレーターから次の値を取得する方法はありますか?

  4. 4

    djangoテンプレートでジェネレーターメソッドを使用する方法は?

  5. 5

    クラス内のメソッドをジェネレーターにすることはできますか?

  6. 6

    node.jsのオブジェクトリテラルでES6ジェネレーターメソッドを指定する方法はありますか?

  7. 7

    イテレータのジェネリックメソッドを実装する適切な方法

  8. 8

    JavaScriptのジェネレーターを理解する

  9. 9

    ネストされたジェネレーターでjqwikジェネレーターメソッドを作成する方法

  10. 10

    ネストされたジェネレーターでjqwikジェネレーターメソッドを作成する方法

  11. 11

    検索を実行するために、ジェネリックセレクターFunc <T、U>を何らかのメソッドに渡す方法は?

  12. 12

    クラス内のジェネレーターメソッドをオーバーライドする

  13. 13

    ジェネリック メソッドで型パラメーターの値を参照する方法

  14. 14

    パラメータArray <Codable>を使用してジェネリックメソッドを宣言する方法は?

  15. 15

    .NETジェネリックメソッドで、実際のパラメータタイプを取得する方法

  16. 16

    ジェネリックインターフェイスメソッドを正しく実装する方法は?

  17. 17

    ジェネリックインターフェイスメソッドを実行する正しい方法は?

  18. 18

    メソッド.toArray(IntFunction <A []>ジェネレーター)が新しい配列のサイズを知る方法

  19. 19

    ジェネリック関数のメソッドのパラメータを実装する方法?

  20. 20

    ジェネリックメソッドの各パラメータの型を取得する方法

  21. 21

    Pythonでジェネレーターを装飾する:yieldの間にメソッドを呼び出す

  22. 22

    インターフェイスのジェネリックメソッドを実装する方法

  23. 23

    ジェネリックインターフェイスのメソッドを実装するには?

  24. 24

    生の型パラメーターではなく、ジェネリックパラメーターのみを受け入れるジェネリックメソッドを作成する方法

  25. 25

    Roslyn で、メソッド パラメータの型/戻り型がジェネリックであるかどうかを確認する方法は?

  26. 26

    <T>の配列のジェネリックメソッドとパラメータ配列を操作する方法は?

  27. 27

    UMLメソッドでジェネリックパラメーターを表す方法は?

  28. 28

    ジェネリックメソッドで不要な型パラメーターを減らす方法は?

  29. 29

    ジェネリックメソッド参照をパラメーターとして渡す方法は?

ホットタグ

アーカイブ