[Go 공식문서 한국어 정리] ⑯36. Go의 오류 처리
https://go.dev/blog/error-handling-and-go
[Go 공식문서 한국어 정리] ⑯36. Go의 오류 처리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서론
Go에서는 예외(exception)을 사용하지 않고 error 인터페이스를 통해 오류를 처리합니다. 이 글은 Go의 오류 처리 방식에 대해 살펴봅니다.
2. 핵심 개념
• error는 인터페이스이며 Error() string 메서드를 가짐.
• 오류가 있으면 nil이 아닌 error를 반환합니다.
• 오류를 직접 검사하는 것이 Go의 관향입니다.
• 반복적인 오류 처리를 간결하는 기법이 있습니다.
3. 주요 내용 상세
3.1 error 타입
• error 인터페이스: type error interface { Error() string }
• errors.New("message")를 사용해 간단한 오류를 생성.
• fmt.Errorf("format", args...)를 사용해 포맷팅된 오류를 생성.
• 오류 문자열은 문맥(context)을 포함해야 합니다. 예: "open /etc/passwd: permission denied"
3.2 커스텀 error 타입
• error는 인터페이스이므로 임의의 데이터 구조를 사용할 수 있습니다.
• 예: type NegativeSqrtError float64
• 사용자 정의 오류는 정보를 전달할 수 있습니다.
• json.SyntaxError는 Offset을 포함해 오류 위치를 알려줍니다.
3.3 타입 단언으로 오류 검사
• 특정 오류 타입을 확인하려면 타입 단언을 사용합니다.
• if serr, ok := err.(*json.SyntaxError); ok { ... }
• net.Error 인터페이스는 Timeout()과 Temporary()를 제공.
• 임시적인 오류와 영구적인 오류를 구별할 수 있습니다.
3.4 반복적인 오류 처리 간결화
• Go에서는 오류를 직접 검사하여 번쟁스합니다.
• 반복적인 오류 처리를 간결하기 위해 함수 타입을 사용할 수 있습니다.
• 예: appHandler 타입을 사용해 HTTP 오류 처리를 통합.
• 오류를 포장하는 구조체를 사용해 사용자에겐 메시지를, 개발자에겐 상세를 전달할 수 있습니다.
4. 실전 활용
• 오류를 반환할 때는 문맥을 포함한 명확한 메시지를 작성합니다.
• 특정 오류 유형을 정의하여 추가 정보를 전달합니다.
• 타입 단언을 사용해 특정 오류를 처리합니다.
• 반복적인 오류 처리는 함수나 타입을 활용해 간결화합니다.
5. 정리
• Go에서는 error 인터페이스를 사용해 오류를 처리합니다.
• errors.New와 fmt.Errorf를 사용해 오류를 생성합니다.
• 커스퐌 오류 타입을 사용해 서로 다른 정보를 전달할 수 있습니다.
• 타입 단언을 사용해 특정 오류를 판별할 수 있습니다.
• 반복적인 오류 처리는 함수나 타입을 활용해 간결화합니다.
#Go #Golang #ErrorHandling #오류처리 #공식문서

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30