
227
8
장
오류
센티넬 오류 패턴은
Go
설계 철학의 또 다른 예제이다. 센티넬 오류는 드물게 사용되어야 하므
로, 언어 규칙 대신 관례로 처리될 수 있다. 그렇다, 공개 패키지 레벨 변수일 것이다. 이것은 변
수를 수정 가능하게 만들지만 누군가가 실수로 패키지 공용 변수를 재할당할 가능성은 거의 없
다. 요컨대, 다른 기능과 패턴으로 처리되는 코너 케이스이다.
Go
는 언어를 단순하게 유지하고
기능을 추가하는 것보다 개발자와 도구의 신뢰를 높이는 게 더 좋다는 철학이 있다.
여기까지 본 모든 오류는 문자열이다. 하지만
Go
오류는 더 많은 정보를 담을 수 있다. 방법을
알아보자.
8.4
오류는 값이다
오류는 인터페이스이기 때문에, 로깅이나 오류 처리를 위한 추가적 정보를 포함하여 자신만의
오류를정의할 수 있다. 예를 들어, 사용자에게 다시 보고해야 하는 오류의 종류를 나타내기 위
해 오류의 일부로 상태 코드를 포함할 수 있다. 이렇게 하면 오류 원인을 결정하기 위한 문자열
비교 (텍스트가 변경될 수 있는 )를 피할 수 있다. 동작 방법을 살펴보자. 첫 번째로 상태 코드
를 나타내는 자신만의 열거형을 정의한다.
type Status int
const (
InvalidLogin Status = iota + 1
NotFound
)
다음으로, 해당 값을 가지는
StatusErr ...