github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/runtime/panic.go (about)

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package runtime
     6  
     7  // Goexitはそれを呼び出したゴルーチンを終了します。他のゴルーチンには影響を与えません。
     8  // Goexitは終了する前にすべての延期呼び出しを実行します。Goexitはパニックではないため、
     9  // これらの延期された関数内のrecover呼び出しはnilを返します。
    10  //
    11  // メインゴルーチンからGoexitを呼び出すと、そのゴルーチンはfunc mainが戻らない状態で終了します。
    12  // func mainが戻っていないため、プログラムは他のゴルーチンの実行を継続します。
    13  // 他のすべてのゴルーチンが終了すると、プログラムはクラッシュします。
    14  func Goexit()
    15  
    16  // PanicNilErrorは、コードがpanic(nil)を呼び出したときに発生します。
    17  //
    18  // Go 1.21より前のバージョンでは、panic(nil)を呼び出すプログラムでは、recoverがnilを返すことが観察されました。
    19  // Go 1.21以降、panic(nil)を呼び出すプログラムでは、recoverが*PanicNilErrorを返すことが観察されます。
    20  // プログラムは、GODEBUG=panicnil=1を設定することで古い動作に戻すことができます。
    21  type PanicNilError struct {
    22  
    23  	// このフィールドによって、PanicNilErrorはこのパッケージの他の構造体とは異なる構造を持ちます。_は、他のパッケージの構造体とも異なります。
    24  	// これにより、この構造体と同じフィールドを共有する他の構造体との間で誤って変換が可能になることを防ぎます。go.dev/issue/56603で発生したような事故を回避します。
    25  	_ [0]*PanicNilError
    26  }
    27  
    28  func (*PanicNilError) Error() string
    29  func (*PanicNilError) RuntimeError()