Go 함수의 오류 처리 모드에는 오류 생성을 위한 오류.New() 사용, 기본 오류 래핑, 오류가 없음을 나타내는 nil 반환 등이 포함됩니다. 안티 패턴에는 마법의 숫자나 문자열을 사용하여 오류를 표시하는 것, 암시적으로 오류를 처리하는 것, 오류를 무시하는 것, 지연된 종료 패턴이 포함됩니다. 모범 사례: 오류를 생성하고 반환하려면 error.New()를 사용하세요. 안티 패턴 예: os.Open()에서 반환된 오류를 무시합니다. 모범 사례를 따르고 안티 패턴을 피하면 명확하고 유지 관리가 가능하며 디버그하기 쉬운 코드가 생성됩니다.
Go 함수 오류 처리의 패턴 및 안티 패턴
Go에서 오류를 처리하는 방법에는 여러 가지가 있습니다. 그러나 모든 모델이 이상적인 것은 아닙니다. 이 기사에서는 Go의 함수 오류 처리에 대한 모범 사례와 안티 패턴을 살펴보고 이를 시연하는 실제 사례를 제공합니다.
모범 사례:
errors.New()
를 사용하세요. errors.New()
创建错误:这是一个创建新错误的最常见方法,它可以返回带有简洁描述的 error
值。nil
表示没有错误:如果函数未遇到错误,则应返回 nil
。反模式:
if err != nil { ... }
来检查错误,然后直接返回,因为这会使错误处理难以跟踪。if err != nil { return err }
的模式会使代码难以阅读和维护。真实案例:
最佳实践:以下函数使用 errors.New()
创建一个新的错误,并返回它以向调用者指示文件打开失败:
func OpenFile(path string) (*os.File, error) { f, err := os.Open(path) if err != nil { return nil, errors.New("failed to open file: " + err.Error()) } return f, nil }
反模式:以下函数没有处理 os.Open()
이것은 간결한 설명과 함께 <코드를 반환하는 새로운 오류를 생성하는 가장 일반적인 방법입니다. >오류 값입니다.
기본 오류로 오류 래핑:
함수에서 오류가 수신되면 새 오류로 래핑하여 오류 소스에 대한 추가 컨텍스트를 제공할 수 있습니다. 🎜🎜오류가 없음을 나타내려면nil
을 반환합니다. 🎜함수에서 오류가 발생하지 않으면 nil
을 반환해야 합니다. 🎜🎜전역 오류 변수를 사용하지 마세요: 🎜전역 오류 변수를 사용하면 경쟁 조건이 발생하고 코드 디버깅이 어려워질 수 있습니다. 🎜🎜오류 처리: 🎜모든 오류는 무시하기보다는 함수 내에서 처리되어야 합니다. 이상적으로는 함수가 실패했음을 나타내는 오류가 반환되어야 합니다. 🎜🎜안티 패턴: 🎜🎜🎜🎜🎜오류를 표시하기 위해 마법의 숫자나 고정 문자열을 사용: 🎜이렇게 하면 코드를 유지 관리하고 확장하기가 어려워질 수 있습니다. 🎜🎜암묵적인 오류 처리: 🎜오류를 확인한 다음 직접 반환하기 위해 if err != nil { ... }
를 사용하지 마세요. 이렇게 하면 오류 처리가 어려워집니다. 길. 🎜🎜오류 무시: 🎜오류가 발생할 가능성이 없다고 생각되더라도 항상 오류를 처리하세요. 🎜🎜지연된 종료 패턴 사용: 🎜함수 끝에 if err != nil { return err }
패턴을 사용하면 코드를 읽고 유지하기가 어려워질 수 있습니다. 🎜🎜실제 사례: 🎜🎜🎜🎜모범 사례: 🎜다음 함수는 errors.New()
를 사용하여 새 오류를 생성하고 이를 호출자에게 반환합니다. 파일 열기 실패: 🎜func OpenFile(path string) *os.File { f, _ := os.Open(path) return f }
os.Open()
에서 반환된 오류를 처리하지 않으며 이로 인해 프로그램이 중단될 수 있습니다. 🎜rrreee🎜 모범 사례 안티패턴을 연습하고 피하면 명확하고 유지 관리가 가능하며 디버그하기 쉬운 코드를 작성할 수 있습니다. 🎜위 내용은 Golang 함수 오류 처리의 패턴과 안티 패턴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!