Golang에는 오류 처리를 위한 여러 관용적 접근 방식이 있습니다.
작성자는 종종 Err.... 명명 규칙에 따라 수정된 오류 변수를 선언합니다. 예:
var ( ErrSomethingBad = errors.New("some string") ErrKindFoo = errors.New("foo happened") )
호출자에게 유용한 특정 정보와 함께 오류 유형(...오류)을 선언하는 것도 또 다른 일반적인 관행입니다.
type SomeError struct { // extra information, whatever might be useful to callers // (or for making a nice message in `Error()`) 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)) }
임시 오류
사용자가 특정 오류를 테스트할 필요가 없을 것으로 예상되는 경우, error.New를 사용하여 임시 오류를 생성할 수 있습니다.
func SomepackageFunction() error { return errors.New("not implemented") }
표준 패키지 오류 사용
io.EOF와 같은 표준 패키지에 정의된 오류를 활용할 수 있습니다. 그러나 일반적으로 자체 패키지에 대한 사용자 정의 오류를 생성하는 것이 더 좋습니다.
func SomeFunc() error { return io.EOF }
오류 인터페이스
오류 인터페이스를 생성하면 특정 동작이나 유형을 확인할 수 있습니다.
type Error interface { error Timeout() bool // Is the error a timeout? Temporary() bool // Is the error temporary? }
상황별 오류
기존 오류에 대한 추가 컨텍스트를 제공하려면 Go 1.13 이상에서 이 기술을 사용하세요.
func SomepackageFunction() error { err := somethingThatCanFail() if err != nil { return fmt.Errorf("some context: %w", err) } }
접근 방식 선택은 사용자가 테스트해야 하는지 여부에 따라 달라집니다. 특정 오류 및 여러 사용자가 자신만의 오류 처리를 구현할 가능성이 있습니다.
위 내용은 Go에서 오류를 가장 잘 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!