>백엔드 개발 >Golang >golang에서 오류를 잡는 방법

golang에서 오류를 잡는 방법

(*-*)浩
(*-*)浩원래의
2019-12-14 13:19:023438검색

golang에서 오류를 잡는 방법

func 패닉(인터페이스{}) 및 func 복구() 인터페이스{}는 Golang에서 오류 처리에 사용되는 두 가지 함수입니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.