Golang 例外処理におけるパニックとリカバリー

WBOY
リリース: 2024-04-15 18:15:02
オリジナル
303 人が閲覧しました

Go では、例外処理に Panic と Recover が使用されます。 Panic は例外を報告するために使用され、Recover は例外から回復するために使用されます。パニックによりプログラムの実行が停止し、interface{} 型の例外値がスローされます。 Recover は遅延関数または goroutine から例外をキャッチし、それがスローするタイプのインターフェースの例外値を返すことができます。{}

Golang 例外処理におけるパニックとリカバリー

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があるとします。

##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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!