/* Page prose (ja) */
"WhenAChildThrows" = "# 子がスローするとき: `withThrowingTaskGroup`\n\n実際のフレームは壊れていることがあります。切り詰められたファイル、誤ったチェックサムなど。フレームの読み込みが `throw` しうるなら、`withThrowingTaskGroup` を使いましょう。単純な版とまったく同じように動きますが、2つの違いがあります。子のクロージャがスローできること、そして `for try await` で反復することです。**いずれか**の子がスローすると、グループは**残りの子をキャンセル**し、そのエラーをグループのスコープの外へ再スローします。";
"WhenAChildThrows-2" = "**実行して確認:** フレーム4がスローし、`for try await` ループが再スローして、グループを抜けます。抜ける途中で、グループは**まだ実行中の兄弟をキャンセル**し、それらが終息するのを待ち、そのあとエラーが `catch` に現れます。`Stacking aborted: frame 4 was corrupt` と表示され、部分的な `sum` は破棄されます。1つの不良フレームのせいで、他の7つのタスクがバックグラウンドで走り続けることはありません。\n\n* callout(設計メモ): 再スローは*全か無か*の姿勢です。1つの失敗がバッチを放棄します。代わりに不良フレームを**スキップ**して良いものだけをスタックしたいなら、子をグループの外にスローさせないでください。子に自分のエラーを catch させ、`Double?`（または小さな `Result` 風の enum）のようなものを返させて、集める際に `nil` を除外します。1つの壊れたフレームがスタック全体を台無しにすべきかどうかで選んでください。\n\n[前へ](@previous)  |  6 / 9 ページ  |  [次へ: 構造化された保証](@next)";
