> 백엔드 개발 > Golang > 관용적 Go 관행은 오류 처리를 어떻게 해결합니까?

관용적 Go 관행은 오류 처리를 어떻게 해결합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-26 08:46:09
원래의
812명이 탐색했습니다.

How Do Idiomatic Go Practices Address Error Handling?

Go의 오류 처리: 표준 및 관용적 접근 방식

Golang은 오류 발생을 표시하기 위해 오류 변수를 사용하도록 권장합니다. 그러나 미리 정의된 표준 오류 변수 세트는 없습니다. 대신 개발자는 오류를 정의하고 처리하기 위해 관용적인 방법을 채택하는 것이 좋습니다.

고정 오류 변수

패키지는 이름이 다음으로 시작하는 고정 오류 변수를 정의하는 것이 일반적입니다. 접두사 "Err". 이러한 변수는 일반적으로 특정 오류 조건을 나타내는 데 사용되므로 오류를 쉽게 확인할 수 있습니다. 예를 들면 다음과 같습니다.

var (
    ErrSomethingBad = errors.New("some string")
    ErrKindFoo      = errors.New("foo happened")
)
로그인 후 복사

오류 유형

또 다른 관용적인 접근 방식은 오류 인터페이스를 구현하는 구조체를 생성하여 사용자 정의 오류 유형을 정의하는 것입니다. 이러한 오류 유형에는 오류와 관련된 추가 정보가 포함될 수 있으므로 특정 오류 유형을 확인하는 것이 편리합니다.

type SomeError struct {
    ExtraInfo int
}
type OtherError string

func (e SomeError) Error() string { /* … */ }
func (e OtherError) Error() string {
    return fmt.Sprintf("failure doing something with %q", string(e))
}
로그인 후 복사

임시 오류 값

상황에 따라 특정 오류 조건이 예상되지 않는 경우에는errors.New() 함수를 사용하여 즉시 새 오류 값을 생성할 수 있습니다. 이 메소드는 사용자 정의 오류 메시지와 함께 오류 값을 반환합니다.

func SomepackageFunction() error {
    return errors.New("not implemented")
}
로그인 후 복사

표준 오류 사용

Go는 패키지에 정의된 제한된 표준 오류 집합을 제공합니다. 이러한 오류는 인터페이스를 구현하거나 특정 표준을 준수할 때 자주 사용됩니다. 그러나 일반적으로 패키지 내의 보다 구체적인 오류 조건에 대해 사용자 정의 오류를 정의하는 것이 좋습니다.

func SomeFunc() error {
    return io.EOF
}
로그인 후 복사

오류 인터페이스

Go에서는 오류 인터페이스 생성도 허용합니다. 일반적인 오류 동작을 정의합니다. 이러한 인터페이스를 사용하면 특정 속성에 대한 오류를 확인할 수 있습니다.

type Error interface {
    error
    Timeout() bool   // Is the error a timeout?
    Temporary() bool // Is the error temporary?
}
로그인 후 복사

Go 1.13의 오류 래핑

Go 1.13부터 기존 오류를 컨텍스트로 래핑하는 것이 가능합니다. 또는 추가 정보. 이는 광범위한 사용자 정의 오류 유형이 필요 없이 사용자에게 더 많은 컨텍스트를 제공하여 오류 처리를 단순화합니다.

func SomepackageFunction() error {
    err := somethingThatCanFail()
    if err != nil {
        return fmt.Errorf("some context: %w", err)
    }
}
로그인 후 복사

이러한 관용적 관행을 따르면 개발자는 Go 코드에서 오류를 효과적으로 처리하여 명확하고 관리 가능한 오류 처리를 보장할 수 있습니다. 메커니즘.

위 내용은 관용적 Go 관행은 오류 처리를 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿