GO · 에러처리
에러 인터페이스 활용
에러가 특정 인터페이스를 구현하는지 확인하여 동작을 결정합니다. 에러 타입에 따른 유연한 처리가 가능합니다.
에러처리중급error-interfaceretryablebehaviornet-error
핵심 설명
에러가 특정 인터페이스를 구현하는지 확인하여 동작을 결정합니다. 에러 타입에 따른 유연한 처리가 가능합니다.
Go code
package main
import (
"fmt"
"net"
)
// 재시도 가능한 에러 인터페이스
type Retryable interface {
error
IsRetryable() bool
}
type TempError struct{ Msg string }
func (e *TempError) Error() string { return e.Msg }
func (e *TempError) IsRetryable() bool { return true }
type FatalError struct{ Msg string }
func (e *FatalError) Error() string { return e.Msg }
func (e *FatalError) IsRetryable() bool { return false }
func handleWithRetry(err error, maxRetries int) {
if r, ok := err.(Retryable); ok && r.IsRetryable() {
fmt.Printf("재시도 가능: %s (최대 %d회)\n", err, maxRetries)
return
}
fmt.Printf("치명적 에러: %s\n", err)
}
func main() {
handleWithRetry(&TempError{"일시적 네트워크 오류"}, 3)
handleWithRetry(&FatalError{"설정 파일 없음"}, 3)
// 표준 라이브러리의 예: net.Error
var netErr net.Error
_ = netErr // Timeout() bool, Temporary() bool 메서드 보유
}학습 팁
에러 인터페이스로 행동을 확인하면 구체적 타입에 의존하지 않아도 됩니다. "재시도 가능한가?"같은 질문에 적합합니다.
주의할 점
에러 인터페이스를 너무 많이 만들면 복잡해집니다. Retryable, Timeout 등 핵심적인 것만 정의하세요.
자주 묻는 질문
에러 인터페이스 활용란 무엇인가요?
에러가 특정 인터페이스를 구현하는지 확인하여 동작을 결정합니다. 에러 타입에 따른 유연한 처리가 가능합니다.
에러 인터페이스 활용 학습 시 주의할 점은 무엇인가요?
에러 인터페이스를 너무 많이 만들면 복잡해집니다. Retryable , Timeout 등 핵심적인 것만 정의하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.