Go는 내장 타입으로 error
라는 인터페이스 타입을 갖는다. Go 에러는 이 error
인터페이스를 통해서 주고 받게 되는데, 메서드 하나를 갖는다.
|
|
개발자는 error 인터페이스를 구현하는 커스텀 에러 타입을 만들 수 있다.
Go 에러처리
Go 함수가 결과와 에러를 함께 반환한다면, 이 에러가 nil 인지 체크하여 에러를 확인할 수 있다.
예를들어 os.Open()
함수는 func Open(name string) (file *File, err error)
과 같은 함수 원형을 갖는데, File 포인터와 error 인터페이스를 함께 반환한다.
|
|
그래서 반환된 두번째 error을 체크하여 nil 이면 에러가 없는 것이고, 아니라면 err.Error()로 부터 해당 에러를 알 수 있다.
- log.Fatal()은 메시지를 출력하고 os.Exit(1)을 호출하여 프로그램을 종료한다.
error Type을 이용한 에러처리
또 다른 에러처리로 error의 Type을 체크하여 에러 타입별로 별도의 에러 처리를 하는 방식이 있다.
|
|
예제에서 otherFunc()를 호출한 후 반환된 error의 타입을 통해 여러 유형의 에러를 처리할 수 있다.
- 모든 에러는 error 인터페이스를 구현하므로 마지막 case문은 모든 에러에 적용된다.