본문 바로가기
프로그래밍/Golang

Golang Error 인터페이스

by slowin 2024. 8. 7.

개요

Go는 예외(exception) 대신 에러(error)를 사용하여 예외처리를 합니다.

예외처리시 사용하는 error 인터페이스에 대해 알아보겠습니다.

Error 인터페이스 정의

Golang의 error 인터페이스는 간단한 구조입니다.

type error interface {
    Error() string
}

단 하나의 메서드만을 가지고 있습니다.

`Error()` 메서드는 에러 설명을 문자열로 반환합니다.

Error 인터페이스 사용하기

에러 반환하기

함수에서 에러를 반환할 때는 보통 마지막 반환 값으로 error 타입을 사용합니다.

func doSomething() (int, error) {
    // 작업 수행
    if 문제발생 {
        return 0, errors.New("문제가 발생했습니다")
    }
    return 결과, nil
}

에러 처리하기

함수 호출 후 반환된 에러를 검사하여 처리합니다.

result, err := doSomething()
if err != nil {
    fmt.Println("에러 발생:", err)
    return
}
// 정상적인 처리 계속

커스텀 에러 만들기

error 인터페이스를 구현하는 커스텀 타입을 만들 수 있습니다.

type MyError struct {
    Msg string
    Code int
}

func (e *MyError) Error() string {
    return fmt.Sprintf("에러 코드 %d: %s", e.Code, e.Msg)
}

한 줄로 에러 처리하기

이처럼 한줄로 간결하게 error를 체크하는 방법을 사용하면, 좀 더 코드 가독성 및 불필요한 코드를 줄일수 있습니다.

if file, err := os.Open("example.txt"); err != nil {
    return fmt.Errorf("파일 열기 실패: %v", err)
} else {
    defer file.Close()
    // 파일 사용
}
return nil

에러 처리의 장점

  1. 명시적인 에러 처리: 개발자가 에러 상황을 명시적으로 처리해야 합니다.
  2. 간단한 인터페이스: error 인터페이스가 단순하여 이해하기 쉽고 구현하기 쉽습니다.
  3. 유연성: 커스텀 에러 타입을 만들어 더 많은 정보를 포함할 수 있습니다.

참고

Error handling and Go