呼び出し元関数は子ゴルーチンのパニックから回復できますか?
子ゴルーチンのパニックからの呼び出し元関数の回復
一般に信じられていることに反して、ゴルーチンのパニックは必ずしもプログラム全体を終了させるわけではありません。この誤解は、呼び出し元の遅延回復機能がパニックに対処するという想定から生じています。ただし、ゴルーチンでパニックが発生する前に呼び出し元が終了した場合はこの限りではありません。
次の例を考えてみましょう。
<code class="go">func fun1() { fmt.Println("fun1 started") defer func() { if err := recover(); err != nil { fmt.Println("recover in func1") } }() go fun2() time.Sleep(10 * time.Second) // wait for the boom! fmt.Println("fun1 ended") } func fun2() { fmt.Println("fun2 started") time.Sleep(5 * time.Second) panic("fun2 booom!") fmt.Println("fun2 ended") }</code>
呼び出し元関数 (fun1) の実行が終了しているにもかかわらず、 fun2 がパニックを起こしてもプログラムは終了します。これが発生するのは、Go の仕様で、ゴルーチンでパニックが発生すると次のように定義されているためです。
- そのゴルーチンの実行は終了します。
- そのゴルーチンによって呼び出された遅延関数は実行されます。
- 呼び出し元の遅延関数が実行されます。
この場合、fun2 はゴルーチンの最上位関数であり、パニックから回復しません。したがって、プログラムは終了します。
重要な点は、
ゴルーチンは、別のゴルーチンで発生したパニックから回復できないということです。
以上が呼び出し元関数は子ゴルーチンのパニックから回復できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
