>  기사  >  백엔드 개발  >  golang 사용자 정의 함수 구현의 예외 처리

golang 사용자 정의 함수 구현의 예외 처리

WBOY
WBOY원래의
2024-04-28 08:21:01951검색

Go에서 사용자 정의 함수 예외를 처리하는 세 가지 방법이 있습니다: 패닉 내장 함수를 사용합니다(구문은 기사 참조) 실제 사례: 나누기 함수 정의, 제수가 0인 경우 패닉 이점: 편리하고 사용자 정의 가능한 오류 메시지, 가능 레벨 처리 오류의 단점: 프로그램 흐름 방해, 디버깅 어려움

golang 사용자 정의 함수 구현의 예외 처리

Go의 사용자 정의 함수에서 예외 처리

Go에서 사용자 정의 함수 예외를 처리하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 panic 내장 기능을 사용하는 것입니다. panic은 프로그램 제어를 recover 함수에 전달하여 예외를 처리하고 안전하게 프로그램 실행을 재개할 수 있도록 합니다. panic 内置函数。panic 会将程序控制权传递给 recover 函数,从而允许您处理异常并安全地恢复程序执行。

语法

package main

import "fmt"

func main() {
    f := func() {
        panic("custom error")
    }

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()

    f()
}

注意:defer 语句必须放置在 panic 语句之前,以便在发生 panic 时被调用。

实战案例

我们定义了一个名为 divide

Syntax

package main

import "fmt"

func main() {
    divide := func(numerator, denominator int) float64 {
        if denominator == 0 {
            // 触发错误
            panic("不能除以 0")
        }

        return float64(numerator) / float64(denominator)
    }

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("错误:", r)
        }
    }()

    result := divide(10, 2)
    fmt.Println(result) // 输出:5

    result = divide(10, 0) // 触发错误
}

참고: defer 문은 panic 문 앞에 배치되어야 panic이 발생할 때 라고 불리는.

실용 사례
  • 두 숫자를 나누는 divide라는 사용자 정의 함수를 정의합니다. 제수가 0이면 함수는 예외를 트리거합니다:
  • 5
    错误: 不能除以 0
  • 출력:
  • rrreee
  • Advantages

편리하고 구현하기 쉽습니다.

    사용자 정의 오류 메시지를 정의할 수 있습니다.
  • 오류는 다양한 기능 수준에서 처리될 수 있습니다.
단점 🎜🎜🎜 프로그램의 흐름을 깨뜨릴 수 있습니다. 🎜🎜대형 프로그램의 경우 디버깅이 어려울 수 있습니다. 🎜🎜

위 내용은 golang 사용자 정의 함수 구현의 예외 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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