ホームページ  >  記事  >  バックエンド開発  >  Golang でエラーをキャッチする方法

Golang でエラーをキャッチする方法

(*-*)浩
(*-*)浩オリジナル
2019-12-14 13:19:023409ブラウズ

Golang でエラーをキャッチする方法

func Panic(interface{}) と func Recovery() Interface{} は、Golang のエラー処理に使用される 2 つの関数です。

panic の機能はエラー メッセージをスローすることですが、そのパラメーターの型から、あらゆる種類のエラー メッセージをスローできることがわかります。 (推奨学習: go)

関数の実行中にどこかでパニックが呼び出された場合、エラー メッセージが即座にスローされ、関数の通常の実行プロセスが実行されます。終了しますが、この関数でパニックの前に定義された defer ステートメントは順番に実行されます。ゴルーチンは直後に実行を停止します。

recover() は、パニック情報を取得するために使用されます。

recover は、パニックの前に defer ステートメントで定義する必要があります。この場合、パニックがトリガーされると、ゴルーチンは単に終了するのではなく、その前に定義された defer ステートメントを実行します。

設定したパニック エラーをキャプチャします:

package main
import "fmt"
import "math"
func foo(a int) {
    defer fmt.Println("foo退出来了")
    defer func() {
        if r := recover(); r != nil {
            fmt.Printf("捕获到的错误:%s\n", r)
        }
    }()
    if a < 0 {
        panic("必须输入大于0的数")
    }
    fmt.Println("该数的方根为:", math.Sqrt(float64(a)))
}
func main() {
    var a int
    a = 10
    fmt.Printf("a=%d\n", a)
    foo(a)
    var b int
    b = -10
    fmt.Printf("b=%d\n", b)
    foo(b)
    fmt.Println("该goroutine还可以执行")
}
// ///////////
a=10
该数的方根为: 3.1622776601683795
foo退出来了
b=-10
捕获到的错误:必须输入大于0的数
foo退出来了
该goroutine还可以执行
Process finished with exit code 0

以上がGolang でエラーをキャッチする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。