일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 타입
- Interface
- scope
- golang
- 국비지원
- receiver method
- array
- Pointer
- struct
- receiver
- golang interface
- golang slice
- keyword
- package
- 스코프
- 패스트캠퍼스
- 메서드
- 함수
- 패스트캠퍼스업스테이지에이아이랩
- method
- golang array
- 상수
- 패스트캠퍼스AI부트캠프
- 변수
- slice
- UpstageAILab
- golang pointer
- 업스테이지패스트캠퍼스
- 패스트캠퍼스업스테이지부트캠프
- golang slice remove
Archives
- Today
- Total
느리지만 꾸준히, 코딩
Golang Error 인터페이스 본문
개요
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
에러 처리의 장점
- 명시적인 에러 처리: 개발자가 에러 상황을 명시적으로 처리해야 합니다.
- 간단한 인터페이스: error 인터페이스가 단순하여 이해하기 쉽고 구현하기 쉽습니다.
- 유연성: 커스텀 에러 타입을 만들어 더 많은 정보를 포함할 수 있습니다.
참고
'프로그래밍 > Golang' 카테고리의 다른 글
Golang 캡슐화, 임베딩 (0) | 2024.08.09 |
---|---|
Golang 함수 []any(슬라이스 파라미터) 와 ...any(가변인자) (0) | 2024.08.08 |
Golang에서 문자열 자르기 (0) | 2024.08.07 |
Golang 정수 타입과 아키텍처 의존성 (0) | 2024.08.06 |
Golang string 과 rune / 한글(멀티바이트) 이슈 (0) | 2024.08.06 |