[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 언어 공식 문서에서 확인할 수 있습니다.