例で学ぶ Go: パニック

panic は、通常、予期しないエラーが発生したことを意味します。私たちは主に、通常業務中には発生しないエラーや、正常に処理できないエラーで即時に障害が発生した場合に使用します。

package main
import "os"
func main() {

このサイト全体でパニックを使用して、予期しないエラーをチェックします。これはパニックするように設計された唯一のプログラムです。

    panic("a problem")

パニックの一般的な使用方法は、処理方法 (または処理したい) が不明なエラー値を関数が返した場合に中断することです。新しいファイルを作成する際に予期しないエラーが発生した場合に panic を発生させる例を次に示します。

    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
}

このプログラムを実行すると、パニックが発生し、エラー メッセージと goroutine トレースが出力され、ゼロ以外のステータスで終了します。

main での最初の panic が発生すると、プログラムは残りのコードに到達せずに終了します。プログラムが一時ファイルを作成しようとしているのを確認したい場合は、最初の panic をコメントアウトしてください。

$ go run panic.go
panic: a problem
goroutine 1 [running]:
main.main()
    /.../panic.go:12 +0x47
...
exit status 2

多くのエラーの処理に例外を使用する言語とは異なり、Go では可能であればエラーを示す戻り値を使用するのが一般的です。

次の例: Defer