상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Go에서 커스텀 에러 타입을 만드는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go에서 <a href='https://sangseek.com/sangseeks/커스텀 에러/ko'>커스텀 에러</a> 타입을 만드는 것은 에러 처리의 유연성을 높이고, 특정 에러에 대한 추가 정보를 제공하는 데 유용합니다. Go의 에러 <a href='https://sangseek.com/sangseeks/처리 모델/ko'>처리 모델</a>은 간단하고 명확하지만, 때로는 기본 에러 타입만으로는 충분하지 않을 수 있습니다. 커스텀 에러 타입을 정의함으로써, 개발자는 더 많은 정보를 포함하거나 특정 에러 상황을 더 잘 설명할 수 있습니다. 커스텀 에러 타입 만들기 Go에서 커스텀 에러 타입을 만들기 위해서는 `error` 인터페이스를 구현해야 합니다. `error` 인터페이스는 단 하나의 메서드인 `Error()`를 가지고 있습니다. 이 메서드는 에러에 대한 설명 문자열을 반환합니다. 다음은 커스텀 에러 타입을 만드는 기본적인 예제입니다: ```go package main import ( "fmt" ) // MyError는 커스텀 에러 타입입니다. type MyError struct { Code int Message string } // Error 메서드를 구현하여 error 인터페이스를 만족시킵니다. func (e *MyError) Error() string { return fmt.Sprintf("Error %d: %s", e.Code, e.Message) } // NewMyError는 MyError의 인스턴스를 생성하는 함수입니다. func NewMyError(code int, message string) error { return &MyError{ Code: code, Message: message, } } func main() { err := NewMyError(404, "Resource not found") if err != nil { fmt.Println(err) } } ``` 코드 설명 1. 커스텀 에러 타입 정의 : `MyError`라는 구조체를 정의하고, 에러 코드와 메시지를 포함하는 필드를 추가합니다. 2. Error 메서드 구현 : `MyError` 타입에 `Error()` 메서드를 구현하여 `error` 인터페이스를 만족시킵니다. 이 메서드는 에러의 설명을 문자열로 반환합니다. 3. <a href='https://sangseek.com/sangseeks/생성자 함수/ko'>생성자 함수</a> : `NewMyError`라는 함수를 만들어 `MyError`의 인스턴스를 생성하고 반환합니다. 이 함수는 코드와 메시지를 인자로 받아 새로운 에러를 생성합니다. 4. 에러 사용 : `main` 함수에서 `NewMyError`를 호출하여 에러를 생성하고, 이를 출력합니다. 추가 정보 포함하기 커스텀 에러 타입은 추가 정보를 포함할 수 있습니다. 예를 들어, 스택 트<a href='https://sangseek.com/sangseeks/레이스/ko'>레이스</a>나 발생한 시간 등의 정보를 추가할 수 있습니다. 다음은 이러한 정보를 포함하는 예제입니다: ```go package main import ( "fmt" "time" ) // MyError는 커스텀 에러 타입입니다. type MyError struct { Code int Message string Timestamp time.Time } // Error 메서드를 구현하여 error 인터페이스를 만족시킵니다. func (e *MyError) Error() string { return fmt.Sprintf("Error %d: %s at %s", e.Code, e.Message, e.Timestamp.Format(time.RFC3339)) } // NewMyError는 MyError의 인스턴스를 생성하는 함수입니다. func NewMyError(code int, message string) error { return &MyError{ Code: code, Message: message, Timestamp: time.Now(), } } func main() { err := NewMyError(500, "Internal server error") if err != nil { fmt.Println(err) } } ``` 에러 검사 및 <a href='https://sangseek.com/sangseeks/타입 변환/ko'>타입 변환</a> Go에서는 에러를 검사하고 특정 커스텀 에러 타입으로 변환할 수 있습니다. 이를 통해 에러의 종류에 따라 다른 처리를 할 수 있습니다. 다음은 타입 변환을 사용하는 예제입니다: ```go if myErr, ok := err.(*MyError); ok { // myErr는 MyError 타입으로 안전하게 변환되었습니다. fmt.Printf("Custom error occurred: %s\n", myErr.Message) } ``` 결론 Go에서 커스텀 에러 타입을 만드는 것은 에러 처리의 유연성을 높이고, 코드의 가독성을 향상시키는 데 큰 도움이 됩니다. 커스텀 에러 타입을 정의하고, 필요한 정보를 포함시키며, 타입 변환을 통해 에러를 처리하는 방법을 익히면, 더 나은 에러 처리 로직을 구현할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기