Go プログラムは、次のような回復不可能なエラーを処理するためにパニックをトリガーします。 組み込み関数呼び出しエラー (make、new、append など) ユーザー定義のパニック コール スタック オーバーフロー メモリ アロケーターの枯渇 メモリの枯渇 コルーチン 致命的な終了シャットダウンなし goroutine チャネルを待機中
Go でのパニック トリガーのタイミング
Go プログラムで回復不能なエラーが発生したとき、それはパニックを引き起こすでしょう。通常、パニックは次の 2 つの状況でトリガーされます。
1. 組み込み関数呼び出し時のエラー
組み込み関数 (# など) ##make、
new、
append) 実行中にエラーが発生すると、パニックが発生します。例:
<code class="go">// 尝试创建超过最大长度的切片导致 panic mySlice := make([]int, 1e100)</code>
2. ユーザー定義のパニック呼び出し
ユーザーは、panic 関数を呼び出して明示的にパニックをトリガーできます。通常、これはプログラムの実行を続行できないエラーを示します。例:
<code class="go">// 缺少必要参数导致 panic func myFunc(a, b int) { if a == 0 { panic("参数 a 不能为空") } }</code>
パニックを引き起こすその他の状況
上記の一般的な状況に加えて、パニックを引き起こす可能性のある他の状況がいくつかあります:#パニックが発生すると、Go プログラムは実行を停止し、スタック トレースを出力します。 。パニックは、recover
関数を実装することで処理できます。この関数はパニックから回復して実行を継続できますが、場合によっては回復できない場合があります。以上がgolang のパニックはいつトリガーされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。