Menu
Coddy logo textTech

panic の理解

CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 42/68。

Goでは、panicは、プログラムが回復不能なエラーに遭遇し、直ちに停止しなければならないような、真に例外的な状況で使用される組み込み関数です。適切に処理する通常のエラーとは異なり、panicは、プログラムのロジックや環境に根本的な問題があることを示す致命的な失敗のために予約されています。

panic が呼び出されると、現在の関数の通常の実行を即座に停止し、コールスタックのアンワインド(巻き戻し)を開始します。これは、呼び出し側のコードで処理可能なエラーを返すという、Goの典型的なアプローチとは大きく異なります。

慣用的なGoでは、panicはめったに使用されません。Goコミュニティは、パニックベースのエラーハンドリングよりも、戻り値による明示的なエラーハンドリングを強く推奨しています。配列の範囲外へのアクセス、nilポインタのデリファレンス、またはライブラリがプログラミング上のバグを示す不可能な状態を検出した場合などに、panicに遭遇することがあります。

ほとんどのGoプログラムは、これまで学んできた標準のerrorインターフェースを使用して、エラーを適切に処理する必要があります。panicは、プログラムの実行を継続するための合理的な方法が本当に存在しない場合にのみ検討されるべきです。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

チートシート

Goでは、panicは、プログラムの実行を即座に停止させる、回復不能なエラーのための組み込み関数です:

panic("something went terribly wrong")

panicが呼び出されると、現在の関数を停止し、コールスタックをアンワインド(展開)します。panicの使用は控えめにしてください。プログラムが続行できないような致命的な失敗に対してのみ使用します。Goは、panicベースのエラーハンドリングよりも、戻り値による明示的なエラーハンドリングを推奨しています。

一般的なpanicの状況には、配列の範囲外アクセス、nilポインタのデリファレンス、またはバグを示す不可能なプログラムの状態などが含まれます。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン