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
キーワード: <pre class='brush:go;toolbar:false;'>func divide(a, b int) float64 {
if b == 0 {
panic("除数不能为零")
}
return float64(a) / float64(b)
}</pre>
出力:
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 サイトの他の関連記事を参照してください。