1. ホーム
  2. go

[解決済み] os.Exit()とpanic()はいつ使うのか?

2022-08-26 04:33:40

質問

の主な違いについて、どなたか教えてください。 os.Exit()panic() の2つがあり、それらがGoで実際にどのように使用されているか?

どのように解決するのですか?

まず、「実際にどのように使われているのか」という疑問がある場合、手始めとして 検索 を検索することです (または、十分に大きな Go コード ベースを検索することです)。 パッケージ ドキュメント を参照してください。

では os.Exitpanic は全く異なるものです。 panic は、プログラムまたはその一部が回復不可能な状態になったときに使われます。

<ブロッククオート

いつ panic が呼び出されると、スライスのインデックスが境界外にある場合や型アサーションに失敗した場合などの実行時エラーに対して暗黙のうちに呼ばれることもありますが、現在の関数の実行を直ちに停止し、goroutineのスタックを巻き戻し始め、途中で遅延した関数があればそれを実行します。巻き戻しがゴルーチンのスタックの最上位に達した場合、プログラムは終了します。

os.Exit は、プログラムを中断するときに使います。 を直ちに中止する必要がある場合に使用されます。 を実行し、エラーコードも (他のプログラムが何が起こったかを報告するために使用できるように) 返します。これはテストにおいて、あるテストが失敗した後、他のテストも失敗することが分かっている場合に便利です。これはまた、プログラムが必要なことをすべて行い、今ちょうど終了する必要がある場合、つまり、ヘルプメッセージを表示した後にも使用できます。

たいていの場合 panic を使うことはないでしょう (その場合は error を返すべきです)、また、ほとんど os.Exit は、テストや迅速なプログラム終了のためのいくつかのケースを除いて、ほとんど必要ありません。