Result를 활용한 에러처리

이 글은 제가 작성한 레포인 generics-for-go를 기반으로 쓰여졌습니다. 개요 예전 고 1.18 dev 버전이 나왔을 때 한 레포를 만들어서 제네릭 관련 함수를 찍어낸 적이 있습니다. 그 이후 한동안 잊고 지내다가 1.18 beta가 나오게 되고 이제 큰 피처의 변화는 없을 거라 판단해서 제네릭으로 몇가지 장난을 하던 도중, 러스트같은 언어에서 자주 보이는 Option과 Result를 만들어 보고 싶었습니다. 예전에도 당연히 interface{}만으로 구현에 도전해봤지만 사실 타입 단언(Type Assertion)을 해야한다는 것에서 그다지 사용성이 좋지 못 했고 이로 인해 코드 수만 늘어났습니다....

December 30, 2021 · snowmerak

에러 처리 in go

쉬운 에러 처리 package main import ( "errors" ) func NewError() error { return errors.New("this is new error!") } func ThrowError() error { _, err := os.Open("not-exist") return err } func main() { err := NewError() if err != nil { log.Println(err) } err = ThrowError() if err != nil { log.Println(err) } } 가장 쉬운 에러 처리 방법은 errors.New 함수로 에러 메시지를 담은 error 인터페이스 인스턴스를 직접 만드는 것과 반환된 에러를 그대로 상위 스택에 넘겨주는 방법이 있습니다....

December 26, 2021 · snowmerak