오류 처리 연습 가이드: 내장된 오류 유형: 내장된 유형을 사용하여 사용자 정의 오류를 만듭니다. 오류 인터페이스: %w 구문을 사용하여 오류를 래핑하여 컨텍스트를 제공합니다. 오류 확인: 오류가 있는지 확인하려면 == nil을 사용하세요. 오류 가드: 오류 처리를 단순화합니다. 사용자 정의 유형: 오류를 표시하고 추가 정보를 제공하는 사용자 정의 유형을 만듭니다. 복구: 패닉이 발생한 경우 복구()를 사용하여 기능을 복원합니다.
Go의 함수 오류 처리에 대한 실용 가이드
소개
Go의 올바른 오류 처리는 매우 중요하며 애플리케이션의 안정성과 유지 관리성을 크게 향상시킬 수 있습니다. 이 기사에서는 다양한 오류 처리 기술을 소개하고 그 사용법을 설명하는 실제 예제를 제공합니다.
1. 내장된 오류 유형
Go는 errors.New()
및 fmt.Errorf("")
와 같은 여러 가지 내장된 오류 유형을 제공합니다. >. 이러한 유형을 사용하여 사용자 정의 오류를 만들 수 있습니다. errors.New()
和fmt.Errorf("")
。我们可以使用这些类型创建自定义错误。
2. error
接口
error
接口允许不同的错误类型相互兼容。我们可以通过使用%w
语法来包装错误以提供上下文。
实战案例 1:
import "errors" func OpenFile(fname string) error { f, err := os.Open(fname) if err != nil { return errors.New("failed to open file: " + err.Error()) } return nil }
3. 检查错误
我们可以使用 == nil
检查错误。若为 nil
,则表示没有错误。
实战案例 2:
func OpenFile(fname string) *os.File { f, err := os.Open(fname) if err != nil { return nil } return f }
4. 错误守卫
错误守卫语法(if err := f(); err != nil { ... }
)提供了一种简化的错误处理方式。
实战案例 3:
func OpenFile(fname string) (*os.File, error) { if f, err := os.Open(fname); err != nil { return nil, err } else { return f, nil } }
5. 自定义类型
我们可以创建自定义类型来表示错误,并提供额外信息。
实战案例 4:
type FileError struct { fname string err error } func (e FileError) Error() string { return fmt.Sprintf("failed to open file %s: %s", e.fname, e.err) } func OpenFile(fname string) (*os.File, error) { f, err := os.Open(fname) if err != nil { return nil, &FileError{fname, err} } return f, nil }
6. 恢复
使用 recover()
2. error
인터페이스
error
인터페이스를 사용하면 다양한 오류 유형이 서로 호환될 수 있습니다. %w
구문을 사용하여 오류를 래핑하여 컨텍스트를 제공할 수 있습니다. 🎜🎜🎜실제 사례 1:🎜🎜func OpenFile(fname string) *os.File { defer func() { if r := recover(); r != nil { fmt.Printf("recover: %s\n", r) } }() f, err := os.Open(fname) if err != nil { panic(err) } return f }
== nil
을 사용하여 오류를 확인할 수 있습니다. nil
이면 오류가 없다는 의미입니다. 🎜🎜🎜실제 사례 2:🎜🎜rrreee🎜🎜4. 오류 가드🎜🎜🎜오류 가드 구문(if err := f(); err != nil { ... }
)이 제공됩니다. 오류를 처리하는 간단한 방법입니다. 🎜🎜🎜실용 사례 3:🎜🎜rrreee🎜🎜5. 사용자 정의 유형🎜🎜🎜사용자 정의 유형을 만들어 오류를 나타내고 추가 정보를 제공할 수 있습니다. 🎜🎜🎜실용 사례 4:🎜🎜rrreee🎜🎜6. Recovery🎜🎜🎜패닉이 발생했을 때 기능을 복구하려면 recover()
를 사용하세요. 🎜🎜🎜실용 사례 5:🎜🎜rrreee위 내용은 Golang 함수 오류 처리 실습 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!