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