[go] 에러 처리를 위한 HTTP 핸들러 구현 방법

Go 언어로 웹 애플리케이션을 개발할 때, HTTP 핸들러에서 발생하는 에러를 적절하게 처리하는 것은 중요합니다. 이 글에서는 Go 언어에서 HTTP 핸들러에서의 에러 처리 방법에 대해 알아보겠습니다.

1. 패키지 설치

에러 처리를 위해 다음과 같은 패키지를 import 해야합니다.

import (
    "net/http"
    "log"
)

2. 기본 에러 핸들러

Go 언어에서는 http.Error 함수를 이용하여 기본적인 에러 처리를 할 수 있습니다. 아래는 404 Not Found 에러를 처리하는 예제입니다.

func notFoundHandler(w http.ResponseWriter, r *http.Request) {
    http.Error(w, "404 Not Found", http.StatusNotFound)
}

3. 커스텀 에러 핸들러

커스텀 에러 핸들러를 구현하여 좀 더 세밀한 에러 처리를 할 수 있습니다. 아래는 커스텀 에러 핸들러를 구현한 예제입니다.

func errorHandler(w http.ResponseWriter, r *http.Request) {
    err := // 에러 발생 로직
    if err != nil {
        http.Error(w, "Something went wrong", http.StatusInternalServerError)
        log.Println("Error:", err)
    }
}

4. 고급 에러 처리 미들웨어

고급 에러 처리를 위해 미들웨어를 사용할 수도 있습니다. 아래는 http.Handler를 래핑하여 에러를 처리하는 고급 에러 처리 미들웨어의 예제입니다.

func advancedErrorHandler(h http.Handler) http.Handler {
    fn := func(w http.ResponseWriter, r *http.Request) {
        defer func() {
            if err := recover(); err != nil {
                http.Error(w, "Internal Server Error", http.StatusInternalServerError)
                log.Println("Panic:", err)
            }
        }()
        h.ServeHTTP(w, r)
    }
    return http.HandlerFunc(fn)
}

위의 방법들을 이용하여 HTTP 핸들러에서 발생하는 에러를 적절하게 처리할 수 있습니다. 각 상황에 맞게 적절한 에러 핸들러를 선택하여 사용하면 됩니다.

에러 처리에 대한 더 많은 내용은 여기에서 확인할 수 있습니다.