> 백엔드 개발 > Golang > `http.Get()` 오류가 발생한 후 HTTP 응답 개체를 닫아야 합니까?

`http.Get()` 오류가 발생한 후 HTTP 응답 개체를 닫아야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-18 02:12:10
원래의
761명이 탐색했습니다.

Should I Close the HTTP Response Object After an `http.Get()` Error?

http.Get(url)을 호출하는 동안 오류가 발생하면 응답 개체를 닫아야 합니까?

http.Get을 호출할 때 (url) 요청 중에 오류가 발생하는 시나리오가 발생할 수 있습니다. 이러한 경우 다음과 같은 질문이 생깁니다. 응답 객체를 닫는 것이 필수입니까?

답변:

일반 프로그래밍 원칙에 따르면 함수가 여러 값을 반환하는 경우 , 오류를 포함하여 오류 값을 먼저 검사해야 합니다. 오류(err != nil)가 있는 경우 적절한 조치를 취해야 하며, err 값이 nil인 경우에만 진행해야 합니다.

http.Get()의 경우 이 개념을 따릅니다. 오류가 발생하면 다음과 같이 nil 응답을 반환합니다.

return nil, someError
로그인 후 복사

따라서 다음과 같이 처리해야 합니다.

res, err := http.Get(url)
if err != nil {
    log.Printf("Error: %s\n", err)
    return
}

defer res.Body.Close()
// Read/work with body
로그인 후 복사

오류가 발생하고 리디렉션 실패로 인해 nil이 아닌 응답이 반환되었더라도 여전히 응답 본문을 닫을 필요가 없습니다. 그러나 그렇게 하려고 한다면 다음과 같은 조건부 검사를 사용할 수 있습니다.

if res != nil {
    defer res.Body.Close()
}
로그인 후 복사

http.Response 문서에서는 응답 데이터의 유무에 관계없이 Body 속성이 절대 nil이 되지 않도록 보장합니다. .

위 내용은 `http.Get()` 오류가 발생한 후 HTTP 응답 개체를 닫아야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿