[go] 웹 페이지 예외 처리
이 블로그 포스트에서는 Go 언어를 사용하여 웹 페이지에서 예외를 처리하는 방법에 대해 알아보겠습니다.
1. HTTP 상태 코드 활용
웹 페이지에서 예외가 발생했을 때, 올바른 HTTP 상태 코드를 반환하는 것이 중요합니다. Go 언어에서는 net/http
패키지를 사용하여 이를 구현할 수 있습니다.
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 예외 상황
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
})
http.ListenAndServe(":8080", nil)
}
위 예제에서는 /
경로에 대한 요청시 500 상태 코드를 반환하는 예외 처리를 구현하였습니다.
2. 에러 핸들링
웹 페이지에서 예외가 발생했을 때, 로깅 및 사용자에게 적절한 메시지를 제공하는 것이 중요합니다. Go 언어에서는 log
패키지를 활용하여 에러를 기록하고, 사용자에게 메시지를 전달할 수 있습니다.
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 예외 상황
err := fmt.Errorf("Something went wrong")
log.Println(err)
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
})
http.ListenAndServe(":8080", nil)
}
위 예제에서는 예외 상황 발생시 에러를 기록하고, 사용자에게 “Internal Server Error” 메시지를 전달하는 예외 처리를 구현하였습니다.
3. 재시도 로직 구현
일시적으로 예외가 발생할 수 있는 상황에 대비하여, 재시도 로직을 구현하는 것이 바람직합니다. Go 언어에서는 time
패키지를 사용하여 재시도 로직을 구현할 수 있습니다.
package main
import (
"fmt"
"log"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
attempts := 3
for i := 0; i < attempts; i++ {
// 예외 상황
_, err := http.Get("http://example.com")
if err != nil {
log.Println(err)
time.Sleep(1 * time.Second) // 1초 대기 후 다시 시도
continue
}
// 예외가 발생하지 않은 경우
fmt.Fprint(w, "Success")
return
}
http.Error(w, "Service Unavailable", http.StatusServiceUnavailable)
})
http.ListenAndServe(":8080", nil)
}
위 예제에서는 /
경로에 대한 요청시 3회의 재시도 후 503 상태 코드를 반환하는 예외 처리를 구현하였습니다.
이상으로 Go 언어를 사용하여 웹 페이지에서 예외를 처리하는 방법에 대해 알아보았습니다. 올바른 HTTP 상태 코드 반환, 에러 핸들링, 재시도 로직 구현을 통해 안정적인 웹 애플리케이션 개발에 도움이 될 것입니다.
관련 자료: