Go では、例外処理に Panic と Recover が使用されます。 Panic は例外を報告するために使用され、Recover は例外から回復するために使用されます。パニックによりプログラムの実行が停止し、interface{} 型の例外値がスローされます。 Recover は遅延関数または goroutine から例外をキャッチし、それがスローするタイプのインターフェースの例外値を返すことができます。{}
Go 言語の例外処理でのパニックとリカバリ
Go 言語の場合、パニック
とreverse
キーワードは、例外処理の重要なメカニズムです。panic
は例外を報告するために使用され、recover
は例外から回復するために使用されます。
Panic
panic
キーワードは、例外条件を報告するために使用されます。これにより、プログラムの実行が直ちに停止され、スタック情報が出力されます。panic
を使用すると、プログラムはinterface{}
型の例外値をスローします。例:
package main func main() { panic("发生了异常") }
Recover
recover
キーワードは、panic
から回復するために使用されます。現在のゴルーチンからinterface{}
型の例外値を返すことができます。 Recovery は遅延関数またはゴルーチン内でのみ使用できます。例:
package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() panic("发生了异常") }
実用的なケース
2 つの数値の商を計算する関数divide
があるとします。
関数で発生する可能性のある例外を処理するには、recover
キーワード:
出力:func divide(a, b int) float64 { if b == 0 { panic("除数不能为零") } return float64(a) / float64(b) }
func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() fmt.Println(divide(10, 2)) fmt.Println(divide(10, 0)) }
以上がGolang 例外処理におけるパニックとリカバリーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。