[go] Go 언어에서의 에러 처리 패턴

Go 언어는 강력한 에러 처리 기능을 제공하여 안정적인 소프트웨어를 개발하는 데 도움을 줍니다. 이 기능을 효율적으로 활용하기 위해 몇 가지 패턴을 사용할 수 있습니다.

에러 처리 기본

첫 번째 패턴은 Go에서의 기본적인 에러 처리 방법입니다. 함수가 에러를 반환할 수 있도록 설계되며, 호출자는 반환된 에러를 확인하여 적절히 처리합니다.

func myFunction() error {
    if somethingWrong {
        return errors.New("Something went wrong")
    }
    return nil
}

func main() {
    err := myFunction()
    if err != nil {
        // 에러 처리 로직
    }
}

에러 종류 구분

두 번째 패턴은 특정 유형의 에러를 정의하고 반환하는 것입니다. 예를 들어, 특정 상황에서 발생하는 에러와 일반적인 에러를 구별하기 위해 사용됩니다.

type MyError struct {
    Msg string
}

func (e *MyError) Error() string {
    return e.Msg
}

func myFunction() error {
    if specificCondition {
        return &MyError{"Specific error occurred"}
    }
    return errors.New("General error occurred")
}

패닉과 복구

세 번째 패턴은 패닉과 복구를 사용하여 크리티컬한 상황에 대응하는 방법입니다. 패닉이 발생하면 현재 함수는 즉시 중단되고, 지연된 함수 호출이 실행됩니다.

func myFunction() {
    defer func() {
        if r := recover(); r != nil {
            // 복구 로직
        }
    }()
    if criticalCondition {
        panic("Critical error occurred")
    }
}

결론

Go 언어에서의 에러 처리는 강력하고 유연하여 다양한 상황에 대응할 수 있습니다. 이러한 패턴을 익히고 활용하여 안정적이고 신뢰할 수 있는 코드를 작성할 수 있습니다.

더 많은 정보는 Go 언어 공식 문서에서 확인할 수 있습니다.