느리지만 꾸준히, 코딩

Golang Error 인터페이스 본문

프로그래밍/Golang

Golang Error 인터페이스

slowin 2024. 8. 7. 23:00

개요

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